我需要一个解决方案(t-sql函数/过程)来解析SQL Server varchar(max)并消除所有特殊字符和重音
此字符串的输出将使用AWK脚本转换为CSV文件,该脚本会打破'&', '%', '\'
等特殊字符,并且转换后的所有重音字符都会转换为未知字符(例如ç
中的français
{1}})这就是我需要这个解析器的原因。
谢谢
答案 0 :(得分:2)
你可以试试这个:
CREATE TABLE dbo.Bad_ASCII_Characters (ascii_char CHAR(1) NOT NULL)
DECLARE @i INT
SET @i = 1
WHILE @i <= 255
BEGIN
IF (@i <> 32) AND
(@i NOT BETWEEN 48 AND 57) AND
(@i NOT BETWEEN 65 AND 90) AND
(@i NOT BETWEEN 97 AND 122)
BEGIN
INSERT INTO dbo.Bad_ASCII_Characters (ascii_char) VALUES(CHAR(@i))
END
SET @i = @i + 1
END
DECLARE @row_count INT
SET @row_count = 1
WHILE (@row_count > 0)
BEGIN
UPDATE T
SET my_column = REPLACE(my_column, ascii_char, '')
FROM My_Table T
INNER JOIN dbo.Bad_ASCII_Characters BAC ON
T.my_column LIKE '%' + BAC.ascii_char + '%'
SET @row_count = @@ROWCOUNT
END
我还没有测试过,所以你可能需要调整一下。您可以每次动态生成表,也可以将其保留在那里,如果您的需求略有变化(例如,您找到一些可以正确解析的字符),那么您只需更改表中的数据即可。
更新周围的WHILE循环是为了防止某些列包含多个特殊字符。如果您的表格非常大,您可能会在这里看到一些性能问题。
答案 1 :(得分:0)
如果我说对了你的话:
SELECT REPLACE('abc&de','&','_')