cob*_*ski 14 sql replace sql-server-2016
我需要替换字符串中的多个字符.结果不能包含任何"&"或任何逗号.
我目前有:
REPLACE(T2.[ShipToCode],'&','and')
Run Code Online (Sandbox Code Playgroud)
但是你如何将多个值放入?
非常感谢!
Siy*_*ual 20
你只需要菊花链它们:
REPLACE(REPLACE(T2.[ShipToCode], '&', 'and'), ',', '')
Run Code Online (Sandbox Code Playgroud)
小智 11
如果您需要精细控制,则可以对嵌套进行缩进格式REPLACE()
以提高可读性。
SELECT Title,
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(RTRIM(Title),
' & ',''),
'++', ''),
'/', '-'),
'(',''),
')',''),
'.',''),
',',''),
' ', '-')
AS Title_SEO
FROM TitleTable
Run Code Online (Sandbox Code Playgroud)
Riv*_*nni 10
如果您使用 SQL Server 2017 或 2019,则可以使用TRANSLATE函数。
TRANSLATE(ShipToCode, '|+,-', '____')
Run Code Online (Sandbox Code Playgroud)
在此示例中,管道、加号、逗号和减号全部替换为下划线。您可以用自己的角色来改变每个角色。因此,在下一个示例中,加号和减号被哈希替换。
TRANSLATE(ShipToCode, '|+,-', '_#_#')
Run Code Online (Sandbox Code Playgroud)
只需确保两组中的字符数相同即可。
我们使用一个函数做类似的循环字符串,但这主要是为了删除不在"@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
Run Code Online (Sandbox Code Playgroud)
有一条评论提到“数十个替换调用” ...如果删除数十个单个字符,您还可以使用翻译和单个替换。
REPLACE(TRANSLATE(T2.[ShipToCode], '[];'',$@', '#######'), '#', '')
Run Code Online (Sandbox Code Playgroud)