SQL中不存在的特殊字符如何处理?
How to handle a special character that does not exist in SQL?
因此使用 CHAR(x) 函数您可以显示特殊字符。我有一些导入的数据显示为“?”或 CHAR(63) / ASCII 代码 63 - 这是不正确的,我认为 SQL 在无法识别实际字符时将此字符放入
select colA, colB,
patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB) as [Position],
substring(colB,patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB),1) as [InvalidCharacter],
ascii(substring(colB,patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB),1)) as [ASCIICode]
from mytable
where patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB) >0
所以经过一番挖掘,我发现数据中的实际字符是“拉丁小连字 FL”字符,本质上只是字母“fl”作为一个字符。
我正在努力替换它,因为 SQL.
中没有此字符的 CHAR(xx) 代码
编辑 - 另外 - 只是为了添加上下文 - 数据来自网络资源并且以某种方式显示这个 fl 字符,我想要做的就是用实际的“fl”字符替换这个字符! - 这是为了插入到应用程序中,它以 CSV 格式一次显示不正确(尽管我的网格实际上显示了“fl”字符)。
有什么建议吗?
谢谢!
经过大量的追查,终于弄明白了这一点。
SELECT colb from mytable
where colb like N'%fl%' COLLATE Latin1_General_BIN2
给我需要更改的数据。然后在替换中这样做给我:
REPLACE(colb COLLATE Latin1_General_BIN2, N'fl', N'fl')
因此使用 CHAR(x) 函数您可以显示特殊字符。我有一些导入的数据显示为“?”或 CHAR(63) / ASCII 代码 63 - 这是不正确的,我认为 SQL 在无法识别实际字符时将此字符放入
select colA, colB,
patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB) as [Position],
substring(colB,patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB),1) as [InvalidCharacter],
ascii(substring(colB,patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB),1)) as [ASCIICode]
from mytable
where patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,colB) >0
所以经过一番挖掘,我发现数据中的实际字符是“拉丁小连字 FL”字符,本质上只是字母“fl”作为一个字符。
我正在努力替换它,因为 SQL.
中没有此字符的 CHAR(xx) 代码编辑 - 另外 - 只是为了添加上下文 - 数据来自网络资源并且以某种方式显示这个 fl 字符,我想要做的就是用实际的“fl”字符替换这个字符! - 这是为了插入到应用程序中,它以 CSV 格式一次显示不正确(尽管我的网格实际上显示了“fl”字符)。
有什么建议吗?
谢谢!
经过大量的追查,终于弄明白了这一点。
SELECT colb from mytable
where colb like N'%fl%' COLLATE Latin1_General_BIN2
给我需要更改的数据。然后在替换中这样做给我:
REPLACE(colb COLLATE Latin1_General_BIN2, N'fl', N'fl')