sqlserver charindex substring len replace

图示

语句:

	SELECT DISTINCT
		unitname,
		CHARINDEX( '(', unitname ) locate,
		SUBSTRING ( unitname, CHARINDEX( '(', unitname ) + 1, LEN( unitname ) - CHARINDEX( '(', unitname ) - 1 ) yaname,
		LEN( unitname ) length
	FROM
		CBHS_XMFT_UNITEQUIPCOMMON

结果:

在这里插入图片描述

知识点解析:

1, CHARINDEX(expression1, expression2 [,start_location]) 默认位置从1开始

expression1:要寻找的字符
expression2:为指定序列搜索的列

如:CHARINDEX( ‘(’, unitname ) 返回值为7

注意:如果找不到的话,则返回0,也可以多字符查找

select CHARINDEX( 'hello', 'world hell' )  --返回0
select CHARINDEX( 'hello', 'world hello' )  --返回7  

2, SUBSTRING(expression, start, length)

expression:为指定序列搜索的列
start:开始截取字符的位置
length:截取字符的长度

 select SUBSTRING('abcde',1,2) --返回结果 ab

 select SUBSTRING('abcde',0,1) --返回结果为空

 select SUBSTRING('abcde',1,0) --返回结果为空

 select SUBSTRING('abcde',0,8) --返回结果为abcde,注意后面没有空格了。
 
 select SUBSTRING('abcde',-5,7) --返回结果为a

3, LEN(string_expression)

string_expression:需要计算的字符长度

 select LEN(' h ello '),LEN('汉字'),LEN(123456); --7 2 6

注意:

1,汉字,英文,数字都算作一个字符
2,位于末尾的空格不算字符个数,但是在首部或者中部的空格计入字符个数
3,数字类型不需要引号

4, REPLACE(string_expression, string_pattern, string_replacement)

string_expression:需要处理的字符
string_pattern:被替换的旧字符
string_replacement:替换的新字符

 select REPLACE(' hello',' ',123);  --返回结果123hello

一般我都用作对数据库中不规范的字符进行处理

比如: 将中文的括号转换为英文的括号

update sys_info set unitname=REPLACE(unitname, '(', '(')

猜你喜欢

转载自blog.csdn.net/qq_36636312/article/details/108527507
今日推荐