Sql server 如何在SQL server中删除数据中的未识别字符

Sql server 如何在SQL server中删除数据中的未识别字符,sql-server,database,unicode,Sql Server,Database,Unicode,我在SQL server中的字符串表中有一些如下数据,当我试图查找时,就像它不起作用一样。 我想把那个不明字符替换为空 我需要Mu��_��__一盎司到一盎司 例如: ->Mu��_��__oz ->S__��_��__��_��___��_��__��_��______ndergaard ->Gaas��_��__��_��___��_��__��_��____��_��__��_��___��_��__��_��____��_��__��_��___��_��__��_��

我在SQL server中的字符串表中有一些如下数据,当我试图查找时,就像它不起作用一样。 我想把那个不明字符替换为空

我需要Mu��_��__一盎司到一盎司

例如:

->Mu��_��__oz
->S__��_��__��_��___��_��__��_��______ndergaard
->Gaas��_��__��_��___��_��__��_��____��_��__��_��___��_��__��_��____��_��__��_��___��_��__��_��____��_��__��_��___��_��__��_��____��_��__��_��___��_��__��_��_____��_��__��_��___��_��__��_��____�
你可以用均匀的语气来形容这一点和这一点

CREATE FUNCTION [dbo].[fn_StripCharacters]
(
    @String NVARCHAR(MAX), 
    @MatchExpression VARCHAR(255)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    SET @MatchExpression =  '%['+@MatchExpression+']%'

    WHILE PatIndex(@MatchExpression, @String) > 0
        SET @String = Stuff(@String, PatIndex(@MatchExpression, @String), 1, '')

    RETURN @String

END
我已经用你的值测试了这个函数,效果很好


我们不知道您是如何生成这些数据的,也不知道其中实际包含哪些字节。黑色的球基本上是一个指示,你试图粘贴的文本的东西,这不是真的。你能不能请你的问题以明确的格式提供有问题的记录(十六进制总是有效的,尽管你的特定SQL产品可能有一个好的规范格式?),我不知道他们插入了哪个字符这里的问题是,我们也不知道你从中取出了哪些字符。能够猜测这些名字是穆尼奥斯和瑟恩德加德,一旦你看到实际的字节数,你可能会得到一个已知的编码。如果你不知道我们在谈论什么,现在是你应该阅读OP所要求的内容的时候了,但是删除你不理解的内容几乎永远都不是正确的解决方案。警告说,你不想这样做。人名中包含非ASCII字符。这是全球生活中的一个事实,也是您需要能够在应用程序中处理的事情。没那么难。Unicode已经存在很多年了。
SELECT dbo.fn_StripCharacters('Mu��_��__oz','^a-z0-9') -->Muoz