您的位置:首页 > 数据库

SQL 特殊函数应用

2016-11-21 15:28 369 查看
1)Isnumeric:返回1|0,检验数值是否为数字类型 。
示列:select * from tb where isnumeric(列)<>1   isnumeric返回非数值的数据行。
 
2) Isdate:测试某一字段是否是有效的datetime 类型,一般用于检查时间列是否存在非正确时间数值,比如系统生成 201608 1、2016801 等这样的时间数值。
示列:select  * from tb where isdate(列)<>1 
 
3) Patindex:-返回指定表达式某模式第一次出现的起始位置,它与charindex 函数不一样。如果在全部有效的文本和字符数据类型中没有找到该模式,则返回0。
如:selectpatindex('%[0-9][A-Z]%','AA_BB_9C_DD_AA_9F_CC_DD')

-- 返回:7
selectcharindex('%[0-9][A-Z]%','AA_BB_9C_DD_AA_9F_CC_DD')

-- 返回:0
看出来没有?patindex函数可以使用通配符,而charindex函数不能。也就是说:patindex函数功能更强大!
 

4)parsename 函数应用

select parsename('192.168.1.25',4) as section1,

parsename('192.168.1.25',3)as section2,

parsename('192.168.1.25',2)as section3,

parsename('192.168.1.25',1)as section4

--结果 192 168 1 25

注意第一段是从4开始
4000
取的,因为这个函数对应的顺序是4是Servername,3是Database name,2是Schema name,1是Object name

通过这样的方法可以做很多简单的分割应用,当然只能用于.号的字符串且只能是少于4段。

parsename的语法就是 截取点 '.' 后面的字符串,1为倒数第一,2为倒数第二...

 

5-1)newid( )  随机函数1,需跟order by newid() 一起使用

比如:select  top 10 * from tb  order by newid()       随机抽取前10行数值.

 

 

5-2)Rand() 随机函数2 ,比如随机抽取出一个时间段内的数据

:select DATEADD(minute,25*rand()-datepart(minute,'18:00:00'),'18:00:00')

结果是:18:00~18:25的随机数
select dateadd(minute,30-15*RAND(),'18:00:00')--18:15~18:30的随机时间

select dateadd(minute,30+15*RAND(),'20:00:00')--20:30~20:45的随机时间

select dateadd(d,-round(rand()*10,0),getdate()),dateadd(d,round(rand()*10,0),getdate()) 随机抽取20天内的数据

 
6) checksum
-- 返回按照表的某一行或一组表达式计算出来的校验和值。 checksum 用于生成哈希索引。

checksum ( *| expression [ ,...n ] )

*指定对表的所有列进行计算。如果有任一列是非可比数据类型,则 checksum 返回错误。

非可比数据类型有 text、ntext、image、xml 和 cursor,还包括以上述任一类型作为基类型的 sql_variant。

expression除非可比数据类型之外的任何类型的表达式。

示例:

-- 找出在T1有,T表没有的记录。
select*from t1where checksum(*)notin
(select checksum(*)from t )

上面示例,等于是把t1表里的一行数据hash和t表一行数据hash后相比,就是说两个表里有没有行完全相当的。

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

sign(int_expr)                     根据正数,0,负数,,返回+1,0,-1
 

 

7)quotename 函数

quotename 使函数中的输入成为一个有效的标识符

select QUOTENAME('dddd') 返回[dddd]

selectQUOTENAME('dddd','"') 返回"dddd"

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

8)   coalesce函数

(下面简称函数),返回一个参数中非空的值。如:

SELECT  COALESCE(NULL, NULL, GETDATE())

由于两个参数都为null,所以返回getdate()函数的值,也就是当前时间。即返回第一个非空的值。由于这个函数是返回第一个非空的值,所以参数里面必须最少有一个非空的值,如果使用下面的查询,将会报错。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: