字符串函数

原创 2004年09月03日 16:32:00

二、字符串函数<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一般形式为:

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

C++ sting字符串函数详解

文章转载自: http://www.renfei.org/blog/introduction-to-cpp-string.html1. 运算符重载    a. + 和 +=: 连接字符串     b....
  • cgl1079743846
  • cgl1079743846
  • 2015年05月23日 16:41
  • 2485

几个常见字符串处理函数的实现原理

字符串是一种常见的数据结构,对字符串的处理又可以十分灵活,所以在实际开发,尤其是非数值处理中,字符串的应用非常广泛。虽然很多字符串操作都封装在了函数库里,应用程序可以直接通过调用库函数来实现字符串处理...
  • suaoyang
  • suaoyang
  • 2014年07月09日 18:26
  • 1866

Oracle 聚合函数解决聚集连接字符串问题

需求: 给定数据表:wm_test code name 1    a 1    b 1    c 2    中 2    国 2    人 需要的结果(分隔符可以由参数输入): code name ...
  • zhengzhb
  • zhengzhb
  • 2013年07月26日 17:50
  • 7361

C语言常用字符串处理函数(一)

C语言常用字符串处理函数(一) 我们经常会遇到要用C语言来直接处理字符串,了解这些函数,编写起代码来能够事半功倍,这也是字符串处理的基础。...
  • junyucsdn
  • junyucsdn
  • 2016年02月28日 11:51
  • 1409

python中根据字符串调用函数

在python中如何根据字符串从而执行相应的函数。
  • kellyseeme
  • kellyseeme
  • 2016年05月30日 14:13
  • 926

C++字符串函数与C字符串函数比较

赋值拷贝: #include #include using namespace std; void main(){ string a="hello world!"; string b; /...
  • iamgaowei
  • iamgaowei
  • 2014年08月04日 14:57
  • 2525

Oracle中的字符串类型及相关函数详解

1、概述 本文介绍String类型及相关的函数,基于当前最新的Oracle 12c 为基础作介绍。 下文将字符串简称为串。 Oracle函数的工作方式有两种: 1、根...
  • anxpp
  • anxpp
  • 2016年06月22日 08:15
  • 10488

SQL各种字符串分拆处理函数

字符串分解 --各种字符串分拆处理函数.sql  -- --各种字符串分函数 if exists (select * from dbo.sysobjects...
  • qq798833488
  • qq798833488
  • 2014年05月12日 09:28
  • 1202

实现自己的字符串拷贝函数Strcpy

strcpy是C语言的库函数,用于完成字符串的拷贝,很多笔试面试过程中要求我们自己实现这个函数。 字符串拷贝本身并没有太多技巧,可以利用最后的'\0'作为界限,用循环完成拷贝,代码如下 char *S...
  • cyfcsd
  • cyfcsd
  • 2016年05月13日 08:39
  • 1596

字符串复制函数strcpy的实现算法

1,字符串复制,需要考虑三种情况: 目的字符串未被赋值,本身是个空串,源字符串存在。目的字符串长度m大于或等于源字符串长度n,此时复制时,源字符串代替目的字符串前n个字符,目的字符串后m-n个字...
  • yychenxie21
  • yychenxie21
  • 2015年09月05日 12:08
  • 2621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串函数
举报原因:
原因补充:

(最多只允许输入30个字)