字符串函数

字符串截断函数是指:Stuff 和 SubString,字符串查找函数是:CharIndex 和 PatIndex

字符串函数

以下有所例子均Studnet表为例:

大器晚成,SubString 截取子串

在开垦T-SQL时,平时会供给对字符串进行绚丽多彩标操作,上边介绍常用的字符串函数。

图片 1

最常用的字符串函数,用于截取特定长度的子串。

1、获取字符的ASCII码 ASCII

1. len():总结字符串长度

len()用来总结字符串的长度,各样粤语汉字或立陶宛共和国(Republic of Lithuania)语字母都为多个尺寸

select sname, len(sname) from student
SUBSTRING ( expression ,start , length )

ASCII码是对字符的专门的职业编码。要获得字符的ASCII码就能够透过调用ASCII函数来兑现。

2. lower()、upper():字符串调换为大、小写

lower() 用来将贰个字符串调换为小写,upper() 用来将多个字符串调换为题写

select lower('I AM A STUDENT !')
select upper('i am a student !')

参数表达:

语法结构:

3. ltrim()、rtrim():截去字符串左、左侧空格

ltrim():用来将二个字符串侧边的空格去掉,rtrim()用来将一个字符串右边的空格去掉

declare @str varchar(100);
set @str=' 我的左侧有空格!';
select @str as 初始字符, len(@str) as 初始长度, ltrim(@str) as 现有字符, len(ltrim(@str)) as 现有长度;

回来结果:开头长度分别为9和8

  • start 参数:整数,表示最初地点;字符的序号(index)从1初叶,即首先个字符的序号是1;
  • length参数:整数,表示截取字符的最大数额;假诺start Length 大于字符串的总参谋长度,那么再次来到从Start初始的兼具字符;
  • 归来data type:假若expression是char或varchar,那么再次来到varchar;如若expression是nchar或nvarchar,那么再次回到nvarchar;

ASCII(espression)

4. space():重临由重复的空格组成的字符串

space(integer_expression):integer_expression 提醒空格个数的正整数。若是 integer_expression 为负,则赶回空字符串。

select 'A'  space(2) 'B'    /* 结果: 'A  B' */

举例:字符串 abcdef,截取从第叁个字符领头,共2个字符的子串是:bc

此地的expression是叁个赶回char或varchar数据类型的表明式,ASCII函数仅对表明式最侧边的字符再次回到ASCII码值。

5. substring()、left()、right():取子字符串

  • substring(string, start_position, length):能够从随飞机地点置取放肆长度的子字符串,

  • left(string, length):从侧边起首取子字符串

  • right(string, length):从侧边带头取子字符串

select substring('HelloWorld!', 6, 6)   /* 结果:World */
select left('HelloWorld!', 5)           /* 结果:Hello */
select right('HelloWorld!', 6)          /* 结果:oWorld */
select substring('abcdef',2,2)

重临值:int数据类型。

6. replace():字符串替换

replace(string, 要被轮换的字符串, 替换的字符串)

select replace('HelloWorld!','o','e')   /* 结果为:HelleWerld! */

二,Stuff 删除字符串的钦点部分,并插入相应的字符,将在字符串中钦命部分替换为新的字符串

示例:

7. reverse():再次回到字符串值的逆向值

reverse(string_expression)

select reverse('abc')   /* 结果为:cba*/

Stuff函数从字符串钦定的带头地点,删除钦点长度的字符串,并从该岗位插入新的字符串。

select ASCII('f')    --输出 102

8. stuff():删除钦定长度的字符,并在内定的起源处插入另生机勃勃组字符

stuff(character_expression, start, length, character_expression) start:整数,钦赐删除和插入的发端地方。 length:整数,钦点要刨除的字符数。

select stuff('abcdefgf', 2, 6, 'Hello-')    /* 结果为:aHello-f */    
select stuff('abcdefgf', 2, 6, 'Hello')        /* 结果为:aHellof */

It deletes a specified length of characters in the first string at the start position and then inserts the second string into the first string at the start position.

小心倘若是多少个字符的字符串,也只是重临第三个字符的ASCII码值。

9. replicate():以内定的次数重复字符串值

replicate(string_expression ,integer_expression)

select replicate('abc', 4)  /* 结果为:abcabcabcabc */
STUFF ( character_expression , start , length , replaceWith_expression )

2、获取ASCII码对应的字符 Char

10. charindex():重临字符串中钦点表明式的上马地方

charindex(expression1 ,expression2 , start_location )或charindex(expression1 ,expression2 )

expression1在expression2 中的开首地点

select charindex('H','elloHWorldHabc')    /* 结果为:5 */

参数表达:

语法结构:

11. patindex():重回钦点“表明式中格局”第三回现身的上马地点

patindex('%pattern%', expression):重返钦命“表明式中某格局”第二回面世的苗子地点; 如若在整个一蹴而就的文件和字符数据类型中尚无找到该格局,则赶回零。

select patindex('%Hello%','WorldHello') 结果为:6
  • start:整数,表示删除和插入的启幕地点;如果start是0,或超过字符串的总参谋长度,那么该函数重回NULL;
  • length:整数,表示删除字符的最大数量;假若Length Start大于字符串的总参谋长度,表示删除从Start带头的富有字符;
  • replaceWith_expression :字符类型,表示从上马地点(start)插入的字符串;

char(integer_expression)

12. unicode():重返输入表达式的首先个字符的整数值

unicode('ncharacter_expression'):'ncharacter_expression' 为 nchar 或 nvarchar 表达式。

select unicode('a')        /* 结果为:97 */
select unicode('abc')    /* 结果为:97 */

举个例子:从差异岗位截断字符串abcdef,查看重返结果

回来值类型:char型字符

13. str():重临由数字数据转换到的字符数据

str(float_expression, length ,decimal ) float_expression:带小数点的形似数字 (float) 数据类型的表明式。 length:总参谋长度。它富含小数点、符号、数字以致空格。暗中同意值为 10。 * decimal:小数点右侧的小数位数。decimal 必需低于等于 16。借使 decimal 大于 16,则将结果截断为小数点侧面的 16 位。

select str(1234.436, 3)         /* 结果为:'**';当表达式超出指定长度时返回'**' */
select len(str(1234.436, 3))     /* 结果为:3 */    
select str(123.436), len(str(123.436))              /* 结果为:'123', 10 */
select str(123.436, 6), len(str(123.436, 6))        /* 结果为:'123', 6 */
select str(123.436, 6, 1), len(str(123.436,6, 1))   /* 结果为:'123.4', 6 */
declare @str varchar(6)
set @str='abcdef'

select  stuff(@str,7,1,''),
        stuff(@str,0,1,''),
        stuff(@str,3,7,''),
        stuff(@str,3,7,'12345')

示例:

14. ascii():获得字符的ASCII码

ascii():用来获得叁个字符的ASCII码,它有且独有八个参数,若是参数为字符串,那么取第几个字符的ASCII码

select ascii('H')               /* 结果为:72 */
select ascii('HelloWorld!')     /* 结果为:72 */

图片 2

select char(102)    -- 输出f

15. Char():获得三个与ASCII码数字对应的字符

Char(integer_expression):integer_expression 介于 0 和 255 之间的卡尺头。若是该整数表明式不在这限定内,将再次来到 NULL 值。

select Char(72)     /* 结果为:H */

选拔stuff函数,必需小心两点:

3、获取字符的unicode编码 Unicode

16. nchar():返回重临具备钦赐的整数代码的 Unicode 字符

nchar(integer_expression) integer_expression 介于 0 与 65535 之间的正整数。要是内定了高于此约束的值,将回来 NULL。

select nchar(20013)        /* 结果为:'中' */
select NCHAR(72)        /* 结果为:'H' */
  1. 要是Length Start大于字符串的总长度,删除从Start开头的有着字符;
  2. 豆蔻梢头旦Start是0,或当先字符串的总参谋长度,重临Null;

unicode函数能够收获字符的unicode编码。

17. quotename() 转义

参考《SqlServer中quotename用法与实例》

三,CharIndex 从字符串中检索字符

语法结构:

18. soundex():发音相配度

神蹟我们并不知道壹人姓名的拼写,不过大家掌握她的失声,那个时候大家得以开展声张的匹配度测量检验。 soundex():用于总括三个字符串的发音特征性,这几个特征值为三个多个字符的字符串,特征性的第二个字符总是早先字符串中的第二个字符,而后是三个二位数的数值。

select sname, soundex(sname) from student

结果为:

图片 3

发音特征值的意思极其复杂,假若要基于四个发音特征值来解析三个字符串的发音相近度的话特别艰难。

勉强可以difference()来简化三个字符串的发声相符度比较,它可以总计七个字符串的发音特征值,并且相比较它们,然后回来叁个0~4之间的值来反映五个字符串的发声雷同度,这些值越大则意味几个字符串的发音相仿度越大。

select sname, soundex(sname), difference(sname,'Herry') from stu

结果为: 图片 4

正文转自《SQL Server之字符串函数》,并稍作改正。

从字符串search中搜索另二个字符串find,如若find存在于search中,重返find在search中首回匹配的发端地方;倘使find不设有于search中,重回0;

unicode('ncharacter_expression')

CHARINDEX ( find ,search [ , start ] )

这里的ncharacter_expression是nchar或nvarchar类型的表达式。函数仅会回到第二个字符的unicode编码。

参数表明:

再次回到值:int类型数据

  • 在字符串search中查找字符串find,查找的起来地方由参数start明确;
  • 譬喻start参数未有一点名,暗许从字符串search的首先个字符领头查找;
  • 如果find 或 search 是null,返回null;
  • 重回值是整数:假使从search中查找到find,那么再次回到第三次相称的发端地方;若是寻觅不到,重返0;

示例:

举个例子:从字符串abcbcdef的两样职责,查找不一样的字符

SELECT Unicode('飞')    -- 输出 39134

select charindex('bc','abcbcdef'),
        charindex('bc','abcbcdef',3),
        charindex('bce','abcbcdef')

4、获取unicode编码对应的字符nchar

图片 5

nchar能够依照unicode标准的定义,重临具备钦赐的卡尺头代码的unicode字符。

结果剖析:

语法结构:

  • bc 在 abcbcdef 中冒出多次,从第四个字符伊始查找,该函数只回去第三次相称的发轫地点;
  • bc 在 abcbcdef 中现身一再,从第一个字符初始查找,该函数只回去第三次相配的上马地方;
  • bce 海市蜃楼 abcbcdef 中,该函数再次回到0;

nchar(integer_expression)

四,PatIndex 从字符串中信守Pattern查找特定字符

返回值:unicode字符

帕特Index 从字符串中查找pattern,重回第1回相称成功的上马地点;若是相配失利,重回0;

示例:

Returns the starting position of the first occurrence of a pattern in a specified expression, or zeros if the pattern is not found.

SELECT nchar(39134)        -- 输出 飞

PATINDEX ( '%pattern%' , expression )

5、获取字符串第一回面世岗位帕特Index

pattern:样式字符,能够运用通配符(%,_,[],^),一定要以通配符%最初和末段

patindex函数再次回到内定表明式中某方式第一遍面世的实际上地方;假若在全方位立见成效的文本和字符数据类型中平素不找到该形式则重临0。

以身作则:从字符串abcbcdef的杰出不一致的pattern

语法结构:

select patindex('
			

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:字符串函数

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。