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开始取的,因为这个函数对应的顺序是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()函数的值,也就是当前时间。即返回第一个非空的值。由于这个函数是返回第一个非空的值,所以参数里面必须最少有一个非空的值,如果使用下面的查询,将会报错。