MSSQL中的一些常用知识

一、模糊查询

    _下划线,表示单个字符,和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

 

  

 

 

 

posted on 2012-12-22 17:13  天上星  阅读(1001)  评论(0编辑  收藏  举报

导航