我的任务是从填写的表格中找出可以输出的出类拔萃的内容。我想做的是为每个表单创建一行,但是问题是表单在数据库中的输入方式。这是当我尝试从以下其中一种形式的部分(当前疾病的历史)中输出所有列时的数据库外观:https://imgur.com/a/QKf2XHY它看起来还包含除sql之外的其他编程语言。填写后的原始形式如下:https://imgur.com/a/hBRPqDE
现在,我尝试在其他用户的帮助下,使用之前使用的先前代码将Text列转换为varchar格式,但在这种情况下无法正常工作。
SET ANSI_WARNINGS ON
Select A.IDEncounter_Note
,FormatMessage = ltrim(rtrim(replace(replace(replace(TxtOnly,' ','†‡'),'‡†',''),'†‡',' ')))
From Encounter_Note A
Cross Apply ( values ( --replace(
replace(
replace(
replace(
replace(
replace('<div>'+CONVERT(VARCHAR(MAX),Text)+'</div>'
,char(13),' ')
,char(10),' ')
,'&'+'nbsp;',' ')
,'&'+'amp;','&')
,'&'+'rsquo;','''')
--,'<o:p></o:p>','')-- May want to add items like — as - and ™ as TM etc...
)
) B(CleanString)
Cross Apply (
Select TxtOnly = stuff((Select ' ' +RetVal
From (
Select RetSeq
,RetVal = left(RetVal,charindex('<',RetVal+RetVal)-1)
From (
Select RetSeq = row_number() over (order by 1/0)
,RetVal = ltrim(rtrim(B.i.value('(./text())[1]', 'varchar(max)')))
From ( values (cast('<x>' + replace((Select replace(CleanString,'>','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.'))) as A(x)
Cross Apply x.nodes('x') AS B(i)
) C1
Where charindex('<',RetVal)>1
) C2
Order By RetSeq
For XML Path(''),TYPE).value('(./text())[1]','varchar(max)')
,1,1,'')
) C
WHERE EncounterID = 89617
我现在想做的是为表单的每个部分填写一列。例如,首席投诉是一栏,而当前栏的历史是另一栏(因此,我必须结合第一张图片中的“文本”栏)。