sqlserver 截取字符串中的汉字

Posted hoho_12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 截取字符串中的汉字相关的知识,希望对你有一定的参考价值。

需求:有类似以下字符串,'["name":"张三","id":"7217599451873","name":"李四","id":"72175943232"'
经过处理之后,返回以下格式类容: 张三,李四
即返回字符串中的汉字内容,并且以逗号隔开。

分析:截取字符串中的汉字,并进行拼接,可编写类似以下函数:

CREATE function getNames(@s varchar(500))
returns varchar(200)
as 
begin
DECLARE
	@temp VARCHAR ( MAX ) = ''
	if len(@s) = 0 or @s is null
	return '无'	
SELECT
	@temp = @temp + SUBSTRING ( ch, sv.number, 1 ) 
FROM
	( SELECT @s AS ch ) t CROSS APPLY [master].dbo.spt_values AS sv 
WHERE
	sv.type = 'P' 
	AND sv.number BETWEEN 1 
	AND LEN( ch ) 
	AND (UNICODE( SUBSTRING ( ch, sv.number, 1 ) ) BETWEEN 19968
	AND 40869 or UNICODE ( SUBSTRING ( ch, sv.number, 1 ) ) = 125)	
	set @temp = replace( @temp ,'',',')
	set @temp = substring(@temp,1,len(@temp)-1)
return @temp
end

根据汉字的unicode码的范围来截取汉字,根据‘’来进行替换拼接。

参考文章:

sqlserver 判断字符串中是否有中文 - cao919 - 博客园

以上是关于sqlserver 截取字符串中的汉字的主要内容,如果未能解决你的问题,请参考以下文章

sql server 字符匹配 有关汉字

SqlServer 获取字符串中小写字母的sql语句

sql server 2000 中文字符串被截断是怎么回事

C#正则表达式如何提取一段字符串中汉字后的数字

sqlserver 字符串截取

截取字符串,含有汉字和字母,不能截半个汉字