【发布时间】:2019-03-25 23:16:45
【问题描述】:
从需求文档中,我需要将数据从 SQL Server 提取到文本文件中,格式类似于 hl7,其中第一列需要填充位置 1-9、下一个 10-27、下一个 28 -43 等等,不管列中数据的实际长度。
鉴于每行/列组合将具有不同的数据长度,不知道如何处理。任何想法,将不胜感激。
我尝试过右空格、左空格等,但它们都只是在实际数据长度上添加空格,而不是将返回数据的长度填充为 x 长度。
SELECT
CAST(LEFT(FIRSTNAME + SPACE(60), 60) AS CHAR(60)) 'LEFT'
FROM MLA
有点像
Robert Gaskin Portland
【问题讨论】:
-
您对该问题的查询应该有效
LEFT(FIRSTNAME + SPACE(60), 60)。这将使列文本的长度为 60 个字符,无论其原始长度如何。 -
SELECT Len(LEFT(PHONENUMBER + SPACE(60), 60)) 'LEFT' FROM MLA 结果长度为 10 个字符。除非我错过了什么……
-
LENSQL Server 中的函数返回忽略尾随空格的文本长度。这就是为什么您看不到LEN返回 60 的原因。但是,空格在那里。您可以使用DATA_LENGTH来验证最终结果。或者只是运行查询并查看结果。 -
是的,在评论后发现,我的错,我道歉。
-
现在您可以自己回答问题了。
标签: hl7 sql-server tsql spaces