sql server拼接字符串函数
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小时内删除。