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