当前位置: 代码迷 >> Sql Server >> 对查询出来的结果集中的字符串进行特殊处理
  详细解决方案

对查询出来的结果集中的字符串进行特殊处理

热度:87   发布时间:2016-04-24 09:58:23.0
对查询出来的结果集中的字符串进行特殊处理,在线等
select sn,summary from ExaminationRecord

需要显示成
140294076451     视力[左]中度视力低下
140294076451     视力[右]中度视力低下
140294076451     本次舒张压偏低
140294001841     体重偏低
140294003503     本次收缩压升高
140294003503     本次舒张压升高
140294003503     主动脉弓迂曲
140294003503     肥胖
140294003827     (左)侧乳腺实性占位(1.4)x(0.9)cm以下多个
140294003827     (左)侧乳腺增生?
140294003827     (右)侧乳腺增生?
------解决思路----------------------
字串拆分
------解决思路----------------------
首先要找出分割字符串的规则,用什么字符作为分割符,然后用CTE来分割为表,在join原记录行,一个记录行就变多行了

CREATE FUNCTION [dbo].[Split]
(
    @String NVARCHAR(4000),
    @Delimiter NCHAR(1)
)
RETURNS TABLE 
AS
RETURN 
(
    WITH Split(stpos,endpos) 
    AS(
        SELECT 0 AS stpos, CHARINDEX(@Delimiter,@String) AS endpos
        UNION ALL
        SELECT endpos+1, CHARINDEX(@Delimiter,@String,endpos+1)
            FROM Split
            WHERE endpos > 0
    )
    SELECT 'Id' = ROW_NUMBER() OVER (ORDER BY (SELECT 1)),
        'Data' = SUBSTRING(@String,stpos,COALESCE(NULLIF(endpos,0),LEN(@String)+1)-stpos)
    FROM Split
)
GO

DECLARE @DelimitedString NVARCHAR(128)
SET @DelimitedString = '1,2,3,4,5'
SELECT * FROM dbo.Split(@DelimitedString, ',')

------解决思路----------------------
复制你里面到空格来分割
------解决思路----------------------
感觉可以先按空格(可能是多个)来拆分,然后在查找中文的顿号等。
我觉得先拆分出正确的函数,然后在处理每一行中,将不需要的字符替换为空
  相关解决方案