SQL 如何澄清字符串中的奇怪字符
SQL How clarify a weird char in a string
我从文件源中抓取了一个 DATE 列,该列在 NVARCHAR(50) 暂存字段中不超过 8 个字符。现在,当我尝试将其转换为 DATE 时,它失败了,因为 SQL 无法应用转换。
我试图更深入地了解发生了什么,并查看了长度。在值得注意的事情中,我意识到 len 始终为 9,并且在 VARBINARY 00D00 的末尾。我手动添加了一个新行,假设该字段和 len 符合我的预期。
代码:
SELECT [LastPriceChange],len([LastPriceChange]),
convert(varbinary(max),[LastPriceChange])
FROM [STAGING].[MBEW]
group by [LastPriceChange]
order by 2 desc
输出:
我试图让最后一部分理解 00D00 的想法是什么,但是当我尝试时:
SELECT REPLICATE(NCHAR(000D00), 5 COLLATE Latin1_General_100_BIN2)
它没有通过,有人知道我该如何解决吗?
谢谢
0x0D
是马车return'\r'
,(char)13
。只需使用 SUBSTRING(LastPriceChange, 0, 8)
即可摆脱它。
可能是您以 Unix 格式读取文件,期望只有 '\n'
(换行符,(char)10
)作为行分隔符,而不是 "\r\n"
(回车符 return + 新行)像往常一样在 Windows?这可以解释为什么 0x0D
被遗留下来。
参见:ASCII, Control characters(维基百科)。
我从文件源中抓取了一个 DATE 列,该列在 NVARCHAR(50) 暂存字段中不超过 8 个字符。现在,当我尝试将其转换为 DATE 时,它失败了,因为 SQL 无法应用转换。
我试图更深入地了解发生了什么,并查看了长度。在值得注意的事情中,我意识到 len 始终为 9,并且在 VARBINARY 00D00 的末尾。我手动添加了一个新行,假设该字段和 len 符合我的预期。
代码:
SELECT [LastPriceChange],len([LastPriceChange]),
convert(varbinary(max),[LastPriceChange])
FROM [STAGING].[MBEW]
group by [LastPriceChange]
order by 2 desc
输出:
我试图让最后一部分理解 00D00 的想法是什么,但是当我尝试时:
SELECT REPLICATE(NCHAR(000D00), 5 COLLATE Latin1_General_100_BIN2)
它没有通过,有人知道我该如何解决吗?
谢谢
0x0D
是马车return'\r'
,(char)13
。只需使用 SUBSTRING(LastPriceChange, 0, 8)
即可摆脱它。
可能是您以 Unix 格式读取文件,期望只有 '\n'
(换行符,(char)10
)作为行分隔符,而不是 "\r\n"
(回车符 return + 新行)像往常一样在 Windows?这可以解释为什么 0x0D
被遗留下来。
参见:ASCII, Control characters(维基百科)。