问题描述
因此,使用CHAR(x)函数可以显示特殊字符。我有一些导入的数据,以下显示为“?”或CHAR(63)/ ASCII代码63-这是不正确的,我认为sql在无法识别实际字符时会将该字符放入
select colA,colB,patindex('%[^ !-~]%' COLLATE latin1_General_BIN,colB) as [Position],substring(colB,colB),1) as [InvalidCharacter],ascii(substring(colB,1)) as [ASCIICode]
from mytable
where patindex('%[^ !-~]%' COLLATE latin1_General_BIN,colB) >0
因此,经过一番挖掘,我发现数据中的实际字符是“拉丁文小连字FL”字符,实际上只是一个字母“ fl”。
尽管如此,我仍在努力替换它,因为在sql中此字符没有CHAR(xx)代码。
编辑-另外-只是为了添加上下文-数据来自Web来源,并以某种方式显示此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')