在SQL Server中替换字符串中的有趣字符

时间:2018-06-26 08:10:33

标签: sql sql-server tsql

我需要帮助替换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áááááá”

有办法吗? 谢谢你的帮助

2 个答案:

答案 0 :(得分:3)

您可以使用REPLACE替换字符串上的字符:

SELECT REPLACE(REPLACE(itemDesc, 'á', ' '), 'û', '-') FROM table_name

如果要UPDATEitemDesc上的值,可以使用以下命令:

UPDATE table_name SET itemDesc = REPLACE(REPLACE(itemDesc, 'á', ' '), 'û', '-')

函数CHARINDEX不能用来替换字符,而是用来查找字符。因此,您可以使用CHARINDEX UPDATESELECT仅包含这些字符的行:

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
  

演示: http://www.sqlfiddle.com/#!18/6e241/1/0

答案 1 :(得分:3)

如果您使用的是SQL Server 2017,则可以使用TRANSLATE

SELECT TRANSLATE(itemDesc, 'áû',' -') AS itemDescTidy
FROM table_name;

这比嵌套的REPLACE简洁(但实际上是相同的,因为它是“简写”功能)。