SQL的一些问题学习

来源:互联网 发布:淘宝客佣金是什么 编辑:程序博客网 时间:2024/04/30 03:38

 (1)在Access里面得到随机记录:

1、SELECT TOP n * FROM tanblename ORDER BY RND(-(ID)/" & Int(Date()) & ")
     它是以日期的不同,而产生随机记录,并非每刷新一次就改一次。
2、
     SELECT TOP n * FROM tanblename ORDER BY rnd([一个自动编号字段])

-----------------------------------------------------------------------------------

(2)在SQL Server里面得到随机记录:                                            
SELECT TOP n * FROM tanblename ORDER BY NEWID()       

 (3) return SqlHelper.ExecuteDataSet(SqlHelper.connectionString, CommandType.StoredProcedure, "  GetAllReturnByPage", param);
注意存储过程名那里不要 有空格要不报错找不到存储过程


(4)RIGHT
返回字符串中从右边开始指定个数的 integer_expression 字符。

语法
RIGHT ( character_expression , integer_expression )

参数
character_expression

由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。

integer_expression

是起始位置,用正整数表示。如果 integer_expression 是负数,则返回一个错误。

返回类型
varchar

character_expression 必须为可隐性转换为 varchar 的数据类型。否则,使用 CAST 显式转换 character_expression。

 

(5)ISNULL
使用指定的替换值替换 NULL。

语法
ISNULL ( check_expression , replacement_value )

参数
check_expression

将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。

replacement_value

在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。

返回类型
返回与 check_expression 相同的类型。

注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。


(6)
XLOCK 使用排它锁并一直保持到由语句处理的所有数据上的事务结束时。
可以使用 PAGLOCK 或 TABLOCK 指定该锁,这种情况下排它锁适用于适当级别的粒度。
PAGLOCK 在通常使用单个表锁的地方采用页锁。


(7)MAX
返回表达式的最大值。

语法
MAX ( [ ALL | DISTINCT ] expression )

参数
ALL

对所有的值进行聚合函数运算。ALL 是默认设置。

注释
MAX 忽略任何空值。

对于字符列,MAX 查找排序序列的最大值。

 

EG
select 'r'+right(1001+isnull(Max(right(rtrim(roleid),3)),0001),3) from db_role with(xlock,paglock)

(8)DISTINCT

指定每个唯一值都被考虑。DISTINCT 对于 MAX 无意义,使用它仅仅是为了符合 SQL-92 兼容性。

expression

常量、列名、函数以及算术运算符、按位运算符和字符串运算符的任意组合。MAX 可用于数字列、字符列和 datetime 列,但不能用于 bit 列

。不允许使用聚合函数和子查询。


重要  当使用 CUBE 或 ROLLUP 时,不支持区分聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT

column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用,则 Microsoft? SQL Server? 将返回错误信息并取

消查询。

 

 


(9)
select bookname from bookitem


bookname
---------------------------------------------------------------
imageProcessing                                               
SignalProcessing                                              Signal And System


select RIGHT(bookname,2)  from bookitem

 


问题是字段的尾部填充了大量的空格或不可见字符。
解决办法使用rtrim  这个问题主要存在于数据库中的数据是有手动添加的情况。如果全是数据库操作后添加的,不存在着重情况。
select RIGHT(rtrim(bookname),2)  from bookitem
select 'r'+right(1001+isnull(Max(right(rtrim(roleid),3)),0001),3) from db_role with(xlock,paglock)