/****************************** 系统函数 ******************************/ --convert 用来转变数据类型 --convert (data_type[(length)], expression [, style]) select convert(int,convert(varchar(5),12345)+'678')+1 --返回12345679 --cast 也是用来转换数据类型 --cast(expression as data_type[(length)]) select cast((cast(12345 as varchar(5))+'678') as int)+1 --返回123456789 --current_user 返回当前用户的名字 select current_user --datalength --返回用于指定表达式的字节数 select datalength ('中国a盟') --中文占个字节 --host_name 返回当前用户所登录的计算机名字 select host_name() --system_user 返回当前所登录的用户名称 select system_user --user_name从给定的用户id返回用户名 select user_name(2) --返回guest --空值函数isnull(col,replaceStr) select isnull(pwd,'***') pwd from person --字符串连接 print 'hello,'+'sqlserver2005!' --如果两个参数相同就返回null,否则返回第一个参数,忽略大小写 if nullif('accp','ACCP2') is null print '两个参数相同' else begin print nullif('accp','ACCP2') print '两个参数不相同' end --返回其中第一个非空的表达式 print coalesce(null,null,'accp') print coalesce(null,'**','accp','case') /**************************** 数学函数 ****************************/ --abs --取数值表达式的绝对值 select abs(-43) --ceiling --返回大于或等于所给数字表达式的最小整数 select ceiling(43.5) select ceiling(-43.5) --floor --取小于或等于指定表达式的最大整数 select floor(43.5) select floor(-43.5) --power --取数值表达式的幂值 select power(5,2) --返回 --round--将数值表达式四舍五入为指定精度 select round(43.543,1) --返回.500 --sqrt --取表达式的平方根 select sqrt(9) --返回.0 --rand select rand() --产生随机-1之间的随机数 --sign --对于正数返回,负数返回-1,零返回 select sign(9) select sign(-9) select sign(0) --随机函数newId()和rand() /* newid()的返回值 是uniqueidentifier newid()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序. rand() 产生小于1的小数,如果指定种子则产生的随机数固定rand(int) */ --随机取出两条数据 select top 2 * from hobby order by newid() --select rand(datename(ms,getdate())) select rand(5) --如果指定种子产生的数将是固定的0.71366 select ceiling(rand()*10) -- 产生1-10的整数 select floor(rand()*10) --产生0-9的整数 /************************* 日期函数 *************************/ --datepart /* 是规定应向日期的哪一部分返回新值的参数。下面列出了microsoft? sql server? 识别的日期部分和缩写。 日期部分 缩写 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw hour hh minute mi, n second ss, s millisecond ms */ --getdate 取得当前的系统日期 select getdate() -- 返回2006-10-07 20:28:27.497 --dateadd( datepart , number, date ) 将指定的数值添加到指定的日期部分后的日期 select dateadd(mm,4,getdate()) --返回2007-02-07 20:33:07.997 --日期差 datediff( datepart , startdate , enddate ) select datediff(mm,getdate(),'2006-11-5') -- 返回1 select datediff(ss,getdate(),'2008-8-8') -- 距北京 --datename日期中指定日期部分的字符串形式 select datename(dw,getdate()) --返回星期六 select datename(ww,getdate()) --返回40 --datepart日期中指定日期部分的整数形式 select datepart(dw,getdate()) --返回 1-7 日-六 --日期转换的特殊方法 convert(data_type,datetime,style) select convert(varchar(50),getdate(),108)--13:24:58 select convert(varchar(50),getdate(),120)--2009-12-15 13:25:47 select convert(varchar(50),getdate(),121)--2009-12-15 13:26:25.213 /********************** 字符串函数 **********************/ --字符与ASCII转换 print ascii('abc') --97 print char(98) --b --charindex查找是否包含。 返回第一次出现的位置,没有返回0 select charindex('accp','my accp course',1 ) --返回4不区分大小写,下标从开始 select charindex('accp','accp course',1 ) --len 返回传递给它的字符串长度 select len('sql server课程') --返回 汉字也是一个字符 select len('ab c ') -- 注意:在len中字符串后面的空格不计入长度 --转换大小写 lower()和upper() select lower('sql server课程') select upper('sql server课程') --清除左右空格ltrim()和rtrim() select '['+ltrim (' 周伯通 ')+']' --返回[周伯通 ] select '['+rtrim (' 周伯通 ')+']' --返回[ 周伯通] --从左或右截取字符串 right() ,left() select right('买卖提.吐尔松',3) --返回吐尔松 select left('买卖提.吐尔松',3) --返回买卖提 --replace(str1,str2,str3) str1为源字串符,str2为查找的子字符串,str3替换的子字符串 --replace ( 'string_expression1' , 'string_expression2' , 'string_expression3' ) select replace('莫乐可切.杨可','可','兰') --返回莫乐兰切.杨兰 --stuff在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串 --stuff ( character_expression , start , length , character_expression ) select stuff('abcdefg', 2, 3, '我的音乐我的世界') --返回:a我的音乐我的世界efg --字符串截取 substring(expression , start , length) start从1开始 select substring('welcome to accp world!',12,4) --返回accp --reverse反转字符串 select reverse('hello world') --返回dlrow olleh --重复字符串replicate('char', rep_time) select replicate('我',3) --我我我 --space(n), 产生n个空行 select '我'+space(5)+'名字'