/************************************************/ --字符串函数 /************************************************/ PRINT CHAR(ASCII('A')) --返回hello中第一次出现L的位置 --(这里有个奇怪的现象,只有在AdventureWorks数据库中,前面的L字符需要区分大小写,应该是该数据库设置了什么地方吧) PRINT CHARINDEX('L','helLo WORLD')-- [AdventureWorks:4, 其他数据库:3] --貌似这个函数和CHARINDEX区别不大,其实这个更强大 PRINT PATINDEX('%L%','hello world') -- [AdventureWorks:4, 其他数据库:3] --模式wl在表达式中找不到(0), [wl]表示在w,l中任意一个,在hello world中在位置(3)找到l --[^wl]:表示不在wl的任何字符,在(1)处找到h SELECT PATINDEX('%wl%','hello world'),PATINDEX('%[wl]%','hello world'),PATINDEX('%[^wl]%','hello world') --[0,3,1] --DIFFERENCE 该函数实则比较两个字符串的SOUNDEX()值相似度[3] SELECT SOUNDEX('hell'), SOUNDEX('hello'), DIFFERENCE('el','hello') PRINT LEFT('hello world',4) -- 取左边个字符[hell] PRINT RIGHT('hello world',6) --取右边个字符, 可以用Len()检验[ world] PRINT LEN(RIGHT('hello world',5)) --表达式里面的字符长度[5] SELECT LEN(RTRIM(LTRIM(' HELLO world '))), LEN(' HELLO world '), LEN(' HELLO world')--切忌LEN函数只计算左边和字符中间的空格,不计算右边的空格[11,13,13] PRINT LOWER('HELLO woRLd') --转为小写[hello word] PRINT UPPER('HELLO world') --转为大写[HELLO WORD] SELECT LEN(' HELLO world'), LEN(LTRIM(' HELLO world')) --去掉左边空格[14,11] SELECT LEN('HELLO world '),LEN(RTRIM('HELLO world ')),RTRIM(' HELLO world ') --去掉右边空格[11,11, HELLO world] SELECT LEN(RTRIM(LTRIM(' HELLO world '))),RTRIM(LTRIM(' HELLO world '))-- 去掉左右空格[11,HELLO world] PRINT REVERSE('HELLO world ') --反转表达式[ dlrow OLLEH] PRINT 'hello'+SPACE(4)+'world' --获取空格, [hello world] /* char a = STR ( float_expression [ , length [ , decimal ] ] ); length:总长度。它包括小数点、符号、数字以及空格。默认值为10。 decimal:小数点后的位数。decimal 必须小于或等于16。如果decimal 大于16,则会截断结果,使其保持为小数点后具有十六位。 返回:char类型 注意: length应该不小于float_expression表达式整数部分的位数,否则将显示length 个* ; length >= LEN(FLOOR(float_expression)) 为了不让左边空格补充: length = LEN(FLOOR(float_expression))+1(小数点)+小数位数 */ PRINT STR(1223445.3,2) --因为小于整数部分个数(7)位 [**] PRINT STR(1223445.3,5) --因为小于整数部分个数(7)位 [*****] DECLARE @num FLOAT SET @num= 323.14159 --如果不足length,则左边已空格补充 SELECT LEN(STR(@num,10,2)),STR(@num,10,2) [10, 323.14] --LEN(FLOOR(@num))+1+2 : 这里表示整数位数+小数点+小数个数 SELECT STR(@num,LEN(FLOOR(@num))+3,2) ,CAST(STR(@num,10,2) AS FLOAT) --从表达式的位置(空格),取个字符( w),然后用DELETE替换刚才找到的两个字符 PRINT STUFF('hello world',6,2,'DELETE') --[helloDELETEorld] /* SUBSTRING ( value_expression ,start_expression , length_expression ) 0<=start_expression<=LEN(value_expression) 0<=length_expression<=LEN(value_expression) 从value_expression位置start_expression取length_expression个字符 */ PRINT SUBSTRING('hello world',2,6) --[ello w]
以上函数也是自己学习的笔记,当然你要合适的用到项目中去,就要看你自己的需求了!
记录学习点滴...,坚持每天让自己的技能增加1%,默默的坚持下去吧!:-)