SQLServer中字符串函数
/************************************************/
--字符串函数
/************************************************/
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]
以上函数也是⾃⼰学习的笔记,当然你要合适的⽤到项⽬中去,就要看你⾃⼰的需求了!
Technorati 标签: ,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论