需求:有类似以下字符串,'[{"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 - 博客园