我从文件源中抓取了一个列,该列假设在一个NVARCHAR(50)暂存字段中的DATE不超过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)
它没有通过,有人知道我应该如何理解它?
感谢
答案 0 :(得分:0)
0x0D
是回车'\r'
,(char)13
。只需使用SUBSTRING(LastPriceChange, 0, 8)
即可摆脱它。
是否可以将该文件作为Unix格式读取,只希望'\n'
(新行字符,(char)10
)作为行分隔符而不是"\r\n"
(回车+新行)像往常一样在Windows?这可以解释为什么遗留0x0D
。
见:ASCII, Control characters(维基百科)。