Sql server 替换MSSQL中的非ascii字符

Sql server 替换MSSQL中的非ascii字符,sql-server,regex,stored-procedures,non-ascii-characters,Sql Server,Regex,Stored Procedures,Non Ascii Characters,我做了不少研究,似乎找不到任何答案。我需要做的是: 将MSSQL列中所有非ascii字符替换为其ascii等效字符。例如: ë --> e ï --> i ñ --> n 我已经通读了以下内容,这些内容可能看起来很相似,但不是替换,而是删除/删除这些字符(这并不理想) 感谢下面的@Eric和选择的答案 (有用参考:)设置起始符号的值或ascii表中的等效值。 并启动一个循环,替换新代码中的所有值 除了旧式的“硬”方法(在任何语言中,甚至不仅仅是SQL)之外,你不能用任

我做了不少研究,似乎找不到任何答案。我需要做的是:

将MSSQL列中所有非ascii字符替换为其ascii等效字符。例如:

ë --> e
ï --> i
ñ --> n
我已经通读了以下内容,这些内容可能看起来很相似,但不是替换,而是删除/删除这些字符(这并不理想)

感谢下面的@Eric和选择的答案


(有用参考:)

设置起始符号的值或ascii表中的等效值。
并启动一个循环,替换新代码中的所有值

除了旧式的“硬”方法(在任何语言中,甚至不仅仅是SQL)之外,你不能用任何其他方法来实现

因为在许多(口语/书面)语言中,重音字符与非重音字符不一样,实际上只是视觉上的相似,所以没有真正的对应。有些字母加上一个符号后看起来完全一样,但实际上有完全不同的“声音”和不同的规则()

只需构建一个表、数组或任何您知道、找到或可以想到的对应关系

char | replacement ------------------ à | a è | e é | e ñ | n ç | c ß | B ... 字符替换 ------------------ |a |e |e 尼翁 |c ß|B ...
然后,在数据和替换字符上循环,用它们的对应关系替换所有字符。

对于遇到这种情况的人,正如我所做的,我发现下面的方法最简单,在一个inplace语句中更新多个列甚至相当简单,请确保设置varchar大小以匹配您更改的列:

UPDATE myTable
SET [Column1]   = cast([Column1] as varchar(10)) collate SQL_Latin1_General_Cp1251_CS_AS,
    [Column2]   = cast([Column2] as varchar(20)) collate SQL_Latin1_General_Cp1251_CS_AS
FROM myTable

你可以参考这个@Eric谢谢,这似乎是解决方案。与下面的建议相同。谢谢,使用这个和上面Eric的参考,我们正在创建一个基本函数来实现这一点。