字符串函数

二、字符串函数

一般形式为:

select function_name(arguments)

拼接二进制或字符表达式:

select (expression+expression+………)

当拼接非字符、非二进制表达式时,必须使用convert函数将其转换为字符类型或二进制类型的数据;

如:select name+”的工资为:”+convert(varchar(12),salary) from auths where sex=0

?

? 大多数字符串函数仅能用于charvarchar以及那些可隐式地转换成charvarchar的数据类型。

拼接可用于binaryvarbinary列上,也可用在charvarchar列上。

字符串可以嵌套,并可用在任何允许表达式存在的地方。当常量同字符串函数一起使用时,要将常量用单引号或双引号括起来。

?

字符串函数

char_exprcharvarcharbinaryvarbinary类型的字符数据表达式

integer_expr是一个正整数

pattern是用于模式匹配的char_expr

float_expr是浮点类型值

?

函数名

参数

返回结果

Ascii

(char_expr)

返回表达式中第一个字符的ASCII编码

Char

(integer_expr)

将单字节的integer值转换为character值。Char通常作为ascii的反函数使用。Integer_expr必须是0255之间的数。

返回的是char数据类型。如果结果值是多字节字符的第一字节,则字符将是未定的。

Charindex

(expression1,expression2)

查找expression1expression2中的起始位置并返回表示起始位置的integer整数值。如果没有找到expression1则返回0。如果expression1包含通配符,将其按文字处理。

Char_length

(char_expr)

返回字符串表达式或text值的长度。对于表中列的可变长数据,在计算字符表达式长度时去掉尾空格。对于多字节字符集,字符长度小于字节数,使用系统函数来确定字节数。

Difference

(char_expr1,char_expr2)

返回表示两个soundex值不同的整数值。

Lower

(char_expr)

将大写字母转换成小写字母,返回character类型值

Itrim

(char_expr)

删除字符串表达式中的前导空格。只有与SQL中指定的字符集中的空格值等价的字符才被删除。

Patindex

(“%pattern%”,

char_expr[using{bytes|

chars|characters}])

返回在指定字符串中第一次出现pattern的起始位置的integer型数据,如果没有找到pattern则返回0。缺省情况下返回字符的偏移量(多个字节的字符串)必须指定using bytes。通配符”%”必须放在pattern的前面或后面。除非要找的位置为起始字符或结尾字符。该函数可被用于text数据

Replicate

(char_expr,integer_expr)

返回一个与char_expr的类型相同的字符串。该字符串是char_expr次的结果(当结果多于255个字节时,则只取前255个字节)。

Reverse

(expression)

逆转字符串或二进制数据的值。如果表达式是“abcd”则返回“dcba”;如果表达式是”0x12345000”,则返回”0x00054321

Right

(expression,integer_expr)

返回从右边开始指定个数的字符串或二进制expression的一部分。返回值同expression具有相同的数据类型

Rtrim

(char_expr)

删除尾空格。只有与SQL中指定的字符集中的空格值等价的字符才被删除。

Soundex

(char_expr)

返回由相邻的单字节或双字节正体字母组成的字符串的一个4字符的soundex代码

Space

(integer_expr)

返回integer_expr个单字节空格组成的字符串

Str

(approx_numeric[,length[,decimal]])

返回代表浮点数的字符串。Length指定返回的字符串数目(包括小数点、小数点左边和右边所有的数字和空格);decimal指定结果返回的小数位数;lengthdecimal是可选项,如果选定,则必须为非负数。缺省的length10,省的decimal0.为了与指定的length相符,该函数四舍五入小数部分

Stuff

(char_expr1,start,length,char_expr2)

char_expr1中删除start开始的length个字符,然后将char_expr2插入到char_expr2start处。如果只删除字符而不插入字符,则必须将char_expr2指定为null,而不是“”,“”表示一个空格

Substring

(expression,start,length)

返回字符串或二进制钟的一部分。Start指定子串的开始位置。Length指定子串的长度。

Upper

(char_expr)

将小写字符串转换为大写字符串 二进制串 列名或它们之间的组合。把字符串放到单引号或双引号中

+

expression

拼接两个或更多的字符串、二进制串、列名或它们之间的组合。把字符串放到单引号或双引号中。

?

下面是使用字符串函数的例子。

例一:substring函数

显示581111日以后出生的所有作家居住的城市:

select name,substring(address,1,4)

from auths

where birthdate>”19588/11/11”

结果:

name

王达林??? 北京

许灵验??? 呼和

张启迪??? 北京

郝丹盈??? 上海

王军????? 上海

例二:charindexpatindex函数的使用

这两个函数都返回一个指定字符表达式或二进制表达式的起始位置。它们都要求两个参数,但它们有一点小小的差别。

Charindex仅可用在charvarchar列上,而patindex还可用在text列上;patindex可使用通配符,而charindex则不能。

它们都有两个参数:

第一个参数是指定其位置的字符表达式或二进制表达式。

对于patindex,必须将字符表达式或二进制表达式括在“%”中,除非寻找的表达式为起始字符串(可省略前面的“%”)或最后的字符串(可省略尾部“%”)。

对于charindex,表达式中不能包括通配符。

第二个参数是一个字符串表达式,通常是一列名。Adaptive Server将在其中找出指定的字符表达式或二进制表达式。

用上述两个函数找出表authstitle列字符串“微软”的开始位置的查询语句是:

select charindex(“微软”,title),patindex(“%微软%”,article_text)

from article

where author_code=”A00001”

结果:

——

1????????????????????? 1

0????????????????????? 1

patindex找出表sysobjects中以sys开始,并且第4个字符是a,b,cd的所有行。

Select name

From sysobjects

Where patindex(“sys[a-d]%”,name)>0

结果:

——
sysalternates

sysattributes

syscolumns

syscomments

sysdepends

例三:使用str函数

str函数用于将float类型的数字转换成字符串。此函数带有指定整数长度(小数点以前的数字部分)和小数点后面位数的可选项。对str来讲,长度和小数参数不应该是负数。

长度的缺省是10,指定的长度应至少等于或大于数的小数点前的部分加上数的符号(如果有的话),即:

??? length>=整数部分+正负号

如果float_expr超过指定长度,则结果中返回指定长度的字符串“**”。

?

Select str(123.45,2,2)? 结果:**

Select str(123.45,6,2)? 结果:123.45

例四:使用stuff函数

stuff函数将一字符串插入到另一字符串。它首先删掉在expr1中从起始位置开始的指定长度的字符,然后再从起始位置插入expr2字符串。如果起始位置或长度是负值,则返回一个空值字符串。如果起始位置长于expr1,也返回一个空值字符串。如果删除长度比expr1长,则删除到expr1中的最后一个符。

Select stuff(“abc”,2,3,”rgf”)???? 结果:argf

?

一些函数的使用

1、? 拼接

语法:select (expression+expression……)

select (“abc”+”def”)?????????? 结果:abcdef

?

select “作家代码列表”=”(“+name+”)”+”作家的代码是:”+author_code

from auths

where author_code<’A0007’

结果:

作家代码列表

——

(王达林)作家的代码是:A0001

?

要拼接数字或日期类型的数据,必须使用转换函数convert

select name+”的出生日期是:”+convert(varchar(30),birthdate)

from auths where sex=0

结果:

——

王达林的出生日期是:Nov 12 1958 12:00AM

2、? 拼接(concatenation)和空字符串

空字符串(一对双引号或一对单引号),被当作一个空格处理。

Select “abc”+””+”def”

结果:

——

abc def

3、? 字符串函数的嵌套

显示出女作家的姓名及其出生年

select name+”生于”+substring(convert(varchar(30),birthdate),8,4)+”

from auths where sex=0

结果:

——
王达林生于1958

?

显示女作家的工资额

select name+”的工资为:”+str(salary,5,1)

from auths where sex=0

结果: 王达林的工资为:120.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值