您的位置:首页 > 其它

有关字符串的处理

2011-11-10 11:39 267 查看
一 处理字符函数

(一)排序规则

1

1)Latin1_General 支持英语

2)字典排序 基于字典排序对字符数据进行排序和比较('A'和'a'<'B'和'b').(排序规则名称中没有显示地出现BIN元素)。如果出现BIN元素,就表示要根据字符的二进制表示对字符数据进行排序和比较('A'<'a'<'B'<'b').

CI 数据不区分大小写('a'='A')

AS 数据区分重音('a'<>'a')-------------声调

2 如果在列的排序规则是不区分大小写的前提下,让过滤条件是区分大小写的,则可以如下修改表达式的排序规则:

SELECT empid,firstname,lastname

FROM HR.Employees

WHERE lastname COLLATE Latin1_General_CS_AS = N'davis';

这次,查询将返回一个空的结果集,因为当使用区分大小写的比较时,没有找到任何匹配的信息。

(二)运算符和函数

字符串串联运算符(加号[+])

SELECT empid,firstname,+N''+lastname AS fullname

FROM HR.Employees;

输出:

empid firstname fullname

1 Sara Davis

2 Don Funk

3 Judy Lew

4 Yael Peled

5 Sven Buck

6 Paul Suurs

7 Russell King

8 Maria Cameron

9 Zoya Dolgopyatova

(三)有关字符串处理

1 LEN 统计字符串长度 --SELECT LEN('Hello') --尾部空格不计

DATALENGTH 函数 包含尾部空格 (磁盘空间) SELECT DATALENGTH (N'abcde');

SELECT DATALENGTH

2 转为小写 Lower('HELLO') 转为大写的 UPPER('hello')

3 找位置(某个子串第一次出现的起始位置) CharIndex('o','hello',1)

注:第一个参数要查找的(substring),第二个参数原字符串(string),第三个参数是起始位置(start_pos)

4 PATINDEX(pattern ,string)函数 返回字符串中某个模式第一次出现的起始位置

例:

SELECT PATINDEX('%[0-9]%','abcd123efgh'); 返回5

注:有点像LIKE谓词

5 REPLACE 替换

SELECT REPLACE('hello world','hello','world')

输出:world world

注:第一个参数是原始字符串,第二个参数是要替换的字符串,第三个是替换后的字符串

6 STUFF (string ,pos,delete_length,insertstring) 先删除字符串中的一个子串,再插入一个新的字符串作为替换。

例:

SELECT ('XYZ',2,1,'abc')

删除第二个字符,再插入字符串‘abc’

7删除空格

RTRIM LTRIM删除输入字符串中的尾随空格或前导空格

语法

RTRIM(string),LTRIM(string)

既想删除前导空格,又想删除尾随空格,则可以将一个函数的结果作为另一个函数的输入来使用。

例 :

以下代码会删除字符串的前导空格和尾随空格,最后返回‘abc’.

SELECT RTRIM(LTRIM(' abc '))

8 SUBSTRING (string ,start,length)函数 (从字符串中提取子串)

SELECT SUBSTRING('abcd',1,3)

注:第一个参数原字符串,第二个参数指定开始位置,第三个截取的长度

9 LIKE 谓词

1)% (百分号)通配符 代表任意长度的字符串,也包括空字符串。

例 返回姓氏(last name)以字符‘D’开头的所有雇员。

SELECT empid,lastname

FROM HR.Employees

WHERE lastname LIKE N'D%';

2) _(下划线)通配符 表示任意单个字符

例: 返回姓氏(lastname)第二个字符为‘e’的所有雇员

SELECT empid,lastname

FROM HR.Employees

WHERE lastname LIKE N'_e%';

3)

LEFT 和RIGHT函数

LEFT(string ,n),RIGHT(string,n)

参数1表示函数要处理的字符串,参数2表示要从字符串的左边或右边提取的字符个数。例如以下代码返回字符串‘cde’:

SELECT RIGHT('abcde',3);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: