2016-08-30 156 views
9

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

我目前有:

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

但你怎么把多个值吗?

非常感谢!

+2

使用另一个'REPLACE':'REPLACE(REPLACE(T2 [ShipToCode], '&', '和'), '', '')' – Lamak

回答

13

你只需要菊花链其中:

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

使如此多的意义。谢谢。 – coblenski

3

我们用一个函数来完成类似的,通过串循环的东西,虽然这主要是删除在“@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