SQL替换字符串中的多个不同字符

时间:2016-08-30 15:05:56

标签: sql replace sql-server-2016

我需要替换字符串中的多个字符。结果不能包含任何'&'或任何逗号。

我目前有:

np.argmax()

但是如何将多个值放入?

非常感谢!

5 个答案:

答案 0 :(得分:17)

你只需要将它们连接起来:

REPLACE(REPLACE(T2.[ShipToCode], '&', 'and'), ',', '')

答案 1 :(得分:6)

我们使用一个函数来做类似于循环字符串的事情,尽管这主要是为了删除不在“@ValidCharacters”字符串中的字符。这对于删除任何我们不想要的东西很有用 - 通常是非字母数字字符,但我认为我们在该字符串中也有空格,引号,单引号和少数其他字符。它真的被用来删除那些倾向于偷偷摸摸的非印刷字符,所以可能不适合你的情况,但可能会给你一些想法。

CREATE FUNCTION [dbo].[ufn_RemoveInvalidCharacters]
 (@str VARCHAR(8000), @ValidCharacters VARCHAR(8000))
RETURNS VARCHAR(8000)
BEGIN
  WHILE PATINDEX('%[^' + @ValidCharacters + ']%',@str) > 0
   SET @str=REPLACE(@str, SUBSTRING(@str ,PATINDEX('%[^' + @ValidCharacters +
']%',@str), 1) ,'')
  RETURN @str
END

答案 2 :(得分:1)

如果使用SQL Server 2017或2019,则可以使用TRANSLATE函数。

TRANSLATE(ShipToCode, '|+,-', '____')

在此示例中,加号,逗号和减号全部替换为下划线。 您可以使用自己的字符来更改每个字符。 因此,在下一个示例中,加号和减号将替换为哈希。

TRANSLATE(ShipToCode, '|+,-', '_#_#')

只需确保两个组中的字符数相同即可。

答案 3 :(得分:0)

有一条评论提到“数十个替换调用” ...如果删除数十个单个字符,您还可以使用翻译和单个替换。

REPLACE(TRANSLATE(T2.[ShipToCode], '[];'',$@', '#######'), '#', '')

答案 4 :(得分:0)

如果您需要精细控制,将 REPLACE() 嵌套缩进格式有助于提高可读性。

SELECT Title,
REPLACE(
    REPLACE(
        REPLACE(
            REPLACE(
                REPLACE(
                    REPLACE(
                        REPLACE(
                            REPLACE(RTRIM(Title),
                            ' & ',''),
                        '++', ''),
                    '/', '-'),
                '(',''),
            ')',''),
        '.',''),
    ',',''),
' ', '-')
AS Title_SEO
FROM TitleTable