我需要帮助替换SQL Server列中的有趣字符,
我有这样的数据:
id itemDesc
----------------------------------------------
1 Ball lock pins/ spring typeáááááá
2 Res 1.5k Ohm û R0805 1%
如果itemDesc
包含á
,则将其替换为" "
;如果它包含(û
),则将其替换为-
。我使用了charindex
但一点也不改变,尤其是对于许多有趣的字符,例如id = 1,因此,如果我使用charindex,“ Ball lock pin / springtypeááááááá” =>“ Ball lock pin / spring typeáááááá”
有办法吗? 谢谢你的帮助
答案 0 :(得分:3)
您可以使用REPLACE
替换字符串上的字符:
SELECT REPLACE(REPLACE(itemDesc, 'á', ' '), 'û', '-') FROM table_name
如果要UPDATE
列itemDesc
上的值,可以使用以下命令:
UPDATE table_name SET itemDesc = REPLACE(REPLACE(itemDesc, 'á', ' '), 'û', '-')
函数CHARINDEX
不能用来替换字符,而是用来查找字符。因此,您可以使用CHARINDEX
UPDATE
或SELECT
仅包含这些字符的行:
SELECT REPLACE(REPLACE(itemDesc, 'á', ' '), 'û', '-')
FROM table_name
WHERE CHARINDEX('á', itemDesc) > 0 OR CHARINDEX('û', itemDesc) > 0
UPDATE table_name SET itemDesc = REPLACE(REPLACE(itemDesc, 'á', ' '), 'û', '-')
WHERE CHARINDEX('á', itemDesc) > 0 OR CHARINDEX('û', itemDesc) > 0
答案 1 :(得分:3)
如果您使用的是SQL Server 2017,则可以使用TRANSLATE
:
SELECT TRANSLATE(itemDesc, 'áû',' -') AS itemDescTidy
FROM table_name;
这比嵌套的REPLACE
简洁(但实际上是相同的,因为它是“简写”功能)。