我目前正在使用一个表,该表处理到诊所就诊的患者。该表中的一个字段显示就诊原因,并且是自由文本,因此无论是谁预约,都可以根据问题给医生留下自定义注解。是的,我很清楚自由文本实际上是最糟糕的。但我没有设计这个数据库或前端医疗记录系统(这也是最糟糕的),我只是坚持处理它。
由于特殊字符、额外的空格和回车符经常会进入前端的自由文本字段,因此其所有内容在SSMS中只显示在一行中,但在将SQL结果粘贴到Excel中时,额外的换行符会导致各种格式问题。我做了一些研究,发现了一段代码,可以替换给定字段中的回车符等。从而迫使该字段的所有内容保留在单个单元格中:REPLACE(REPLACE(FieldName,char(10),''),char(13),'') as FieldName
这对于VisitReason
字段和我不得不使用的任何其他自由文本字段都非常有效。* 然而 *,它是否考虑了自由文本中可能出现的所有问题?昨天我使用此表,并将SSMS的结果粘贴到Excel中。有两个人的VisitReason
场被过早地切断,然后有了 * 所有 * 结果(就像在多个字段中一样)从一堆其他人的访问中提取出来,塞进同一个字段中(因此在Excel中形成了一个非常长的单元格)。
例如,其中一个人的VisitReason
在SSMS中显示为complaining of rash, see note
。但当它粘贴到Excel中时,结果看起来像...
PatientID PatientName VisitDate ... VisitReason
----------------------------------------------------------------------------------------------
1001 Smith, John 01/08/2023 ... complaining of rash, see
PatientID1002PatientNameJaneDoeVisitDate01/08/2023VisitRe
asondiabetesfollowupPatientID1003PatientNameBobBrownVisitDa
(and so on)
我不知道这是否与自由文本字段有关,并且其中存在一些隐藏字符,导致REPLACE
函数无法捕获的奇怪的换行符和字段合并。或者是Excel的错误(在这种情况下,这显然不是一个正确的地方问)。但是我想检查一下,看看是否有什么东西可能需要添加到REPLACE
行,以解决这个问题。
我的完整查询非常简单:
SELECT
d.PatientID,
d.PatientName,
v.VisitDate,
[some other visit-related fields, none of which are free text],
REPLACE(REPLACE(v.VisitReason,char(10),''),char(13),'') as VisitReason,
[some other demographic fields, none of which are free text]
FROM Demographics d
JOIN Visit v ON d.PatientID = v.PatientID
REPLACE
函数对于列表中的其他病人都能很好地工作,除了上面显示的两个病人,这两个病人的结果会影响到他们后面的其他行。
1条答案
按热度按时间cpjpxq1n1#
请尝试以下解决方案。
xs:token
数据类型正在去除空白字符。