如何处理SQL中不存在的特殊字符?

问题描述

因此,使用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')