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 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值