一、模糊查询
_下划线,表示单个字符,和Like连用。如查询姓张,且姓名含有两个字的记录,则为:
Select * From Student Where sName Like '张__'
下划线也可以在中间:Like '_国_',中间为国字的记录
%百分号,表示0个或多个字符。和Like连用,如查询以倒数第二字A结尾的记录
Select * From Orders Where CustomerID Like '%A_'
[]方括号,表示其中的任意一个字符,如Like ‘A[0-9]’表示A0、A1...A9其中的值, Like 'A[c,f]'表示条件为Ac或Af记录。
[^]表示不包含方括号中的字符,如Like '[^0-9]',表示不包含0到9中的字符。Like 'A[^c,f]'表示条件不为Ac和Af的记录。
二、Top 、Percent 关键字
Top表示查询出来的语句的前n条记录。
如Select Top 10 * from orders order by orderID 表示查询前10条记录,默认为升序
Percent表示查询的百分比,和Top连用。
如Select Top 10 Percent OrderID,SUM(account) From Orders Group by OrderID Order by 2 Desc
表示查询出订单金额最高的10%的订单。
三、给小数取整数,Ceiling(),Floor()
ceiling表示向上取整,即小数的整数部分再加1即可。如ceiling(2.86)为3.
floor表示向下取整,即小数的整数部分。floor(10.99)为10.
四、四舍五入函数,Round()
即把带小数点的数值进行四舍五入。本函数有两个参数,第一个参数为要四舍五入的数值,后面为四舍五入后保留的小数位,即看此位数的下一位是否能入上或舍弃。
如:Select Round(12.3365,2),得到的值为12.34,保留两位小数,第三位是否可以入得上。
五、Rand随机函数
Rand(int seed )返回的值是0到1之间的随机小数,如果想得到记录为0-100内的值,则可以这样处理:Rand()*100即可。
如果指定了种子值,且种子值并不是随机产生的,则调用Rand的值是不会变化的。包括它以后的Rand()也是不可变的,
如:Select Rand(20.33),Rand(),你不停的执行,会发现两个值都不会变,因为20.33是个定值,对不是随机的值。
如:
select RAND(DATEPART(ms,getdate())) , RAND(),你会发现这两个值是不停的在变,因为DATEPART(ms,getdate())是取毫秒数,也是一种在变的数,故可以变化。
其实Rand()中是有种子值的,只是默认的,根据MsSql分布数据产生的。记着,只有种子是随机的此函数产生的值也是随机的,否则是不变的,它也会影像其后的Rand的值。
六、检查给定的数值是大于0、等于0还是小于0,Sign()函数
如果指定的列大于0,则此函数值=1,列等于0时则结果为0,小于0时则结果为-1
如Select Sign(22.33),值为1.
Select Sign(0),值为0.
Select Sign(-12.56),值为-1
七、大小写转换,UPPER(),LOWER()
如:Select Upper(abc),则值为ABC.
Select lower(ABc),则值为abc.
八、字符串的一些函数
Len(express)表示一字符串的长度,如Len('ABC')=3
Replace(express,express1,express2)表示用express2替换express中的express1.如select REPLACE('ABCDEFG','D','123')=ABC123EFG
SubString(express,startindex,length)表示读取express字符串中从startindex开始,读取长度为Length的字符串。如select SUBSTRING('ABCDEFG',3,3)=’CDE‘,开始的索引是从1开始的,并不是从0.
STUFF(express,startindex,length,newexpress)表示从express中的startindex开始删除一字符串,删除的长度为length,并用新的字符或字符串newexpress填充删除过的值。startindex的索引是从1开始的。如:select STUFF('ABCDEFG',4,3,'XXX')=‘ABCXXXG’
CharIndex(substring,sourcestring,[StartIndex]):从sourcestring中查询子串substring开始的索引位置,如果后面的StartIndex参数写入值,则表示从StartIndex处查询子串在sourcestring中的索引值。如select CHARINDEX('E','ABCDEFG',5)=5,select CHARINDEX('E','ABCDEFG',6)=0