我需要替换字符串中的多个字符。结果不能包含任何'&'或任何逗号。
我目前有:
np.argmax()
但是如何将多个值放入?
非常感谢!
答案 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