Sql字符串操作函数大全

发布时间:2020-08-20编辑:脚本学堂
Sql字符串操作函数大全

首先,第一个问题
select * from itemcode
where code like '40%'
如何让code=40101001
变成code=401-01-001
目前有666个CODE是类似40101001
用什么语句能把它变成401-01-001

解答:
update itemcode set code=replace(code,left(code,8),left(code,3)+'-'+substring(code,4,2)+'-'+substring(code,6,3)) where code like '40%'

问题2:
replace(code,left(code,8),left(code,3)+'-'+substring(code,4,2)+'-'+substring(code,6,3))是什么意思?

解答:
拿 code=123456789 做例子
a = left(code,8) = 12345678
b = left(code,3) = 123
c = substring(code,4,2) = 45
d = substring(code,6,3) = 678
e = b+'-'+c+'-'+e = 123-45-678
f = replace(code,a,e) = 123-45-6789
配合下边的来看,应该能明白了
1、left(code,8) 取前8位
2、substring(code,4,2) 从第4位开始取2位
3、+ 是字符串连接符
4、replace(a,str1,str2) 将a中的str1替换为str2

附:
sql server常用字符串操作函数

1:replace 函数
第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么
select replace('lihan','a','b')
                                                    
-----------------------------
lihbn

(所影响的行数为 1 行)

2:substring函数
第一个参数你的字符串,第二个是开始替换位置,第三个结束替换位置
select substring('lihan',0,3);
-----
li

(所影响的行数为 1 行)

3:charindex函数
第一个参数你要查找的char,第二个参数你被查找的字符串 返回参数一在参数二的位置
select  charindex('a','lihan')
-----------
4

(所影响的行数为 1 行)

4:ASCII函数
返回字符表达式中最左侧的字符的 ASCII 代码值。
select ASCII('lihan')
-----------
108

(所影响的行数为 1 行)

5:nchar函数
根据 Unicode 标准的定义,返回具有指定的整数代码的 Unicode 字符。
参数是介于 0 与 65535 之间的正整数。如果指定了超出此范围的值,将返回 NULL。
select nchar(3213)
----
unicode字符

(所影响的行数为 1 行)

6:soundex
返回一个由四个字符组成的代码 (SOUNDEX),用于评估两个字符串的相似性。
SELECT SOUNDEX ('lihan'), SOUNDEX ('lihon');
----- -----
L546  L542

(所影响的行数为 1 行)

7:char
参数为介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。
SELECT char(125)
----
}

(所影响的行数为 1 行)

8:str函数
第一个参数必须为数字,第二个参数表示转化成char型占的位置,小于参数一位置返回*,大于右对齐
SELECT str(12345,3)
----
***

(所影响的行数为 1 行)

SELECT str(12345,12)
------------
       12345

(所影响的行数为 1 行)

9:difference函数
返回一个整数值,指示两个字符表达式的 SOUNDEX 值之间的差异。
返回的整数是 SOUNDEX 值中相同字符的个数。返回的值从 0 到 4 不等:0 表示几乎不同或完全不同,4 表示几乎相同或完全相同。
SELECT difference('lihan','liha')
-----------
3

(所影响的行数为 1 行)

10:stuff函数(四个参数)
函数将字符串插入另一字符串。它在第一个字符串中从开始位置删除指定长度的字符;然后将第二个字符串插入第一个字符串的开始位置。
SELECT stuff('lihan',2,3,'lihan')
--------
llihann

(所影响的行数为 1 行)

11:left函数
返回最左边N个字符,由参数决定
select left('lihan',4)
-----
liha

(所影响的行数为 1 行)

12: right函数
返回最右边N个字符,由参数决定
select right('lihan',4)
-----
ihan

(所影响的行数为 1 行)

13:replicate函数
我的认为是把参数一复制参数二次
select replicate('lihan',4)
--------------------
lihanlihanlihanlihan

(所影响的行数为 1 行)

14:len函数
返回参数长度
select len('lihan')
-----------
5

(所影响的行数为 1 行)

15:reverse函数
反转字符串
select reverse('lihan')
-----
nahil

(所影响的行数为 1 行)

16:lower和upper函数
参数大小写转化
select lower(upper('lihan'))
--------------------
lihan

(所影响的行数为 1 行)

17:ltrim和rtrim函数
删除左边空格和右面空格
select ltrim('    lihan                 ')
--------------------------
lihan               

(所影响的行数为 1 行)
select rtrim('    lihan')
---------
    lihan

(所影响的行数为 1 行)