【发布时间】:2021-05-25 12:38:44
【问题描述】:
我正在使用SQL Server 2014 并且我有以下T-SQL 查询:
select p9.[Name]
from [CleanGuestNames] p outer apply
(select replace(p.[Name], '@', '*') as [Name]) p1 outer apply
(select replace(p1.[Name], '&', '*') as [Name]) p2 outer apply
(select replace(p1.[Name], '\', '*') as [Name]) p3 outer apply
(select replace(p1.[Name], '?', '*') as [Name]) p4 outer apply
(select replace(p1.[Name], '/', '*') as [Name]) p5 outer apply
(select replace(p1.[Name], ':', '*') as [Name]) p6 outer apply
(select replace(p1.[Name], ';', '*') as [Name]) p7 outer apply
(select replace(p1.[Name], '.', '*') as [Name]) p8 outer apply
(select replace(p2.[Name], ',', '*') as [Name]) p9 ;
上面的代码应该用 [Name] 列中的 * 替换其中提到的所有字符。
当我运行查询时,我仍然从 [Name] 列中得到如下记录:
Alex / Sandrine SINNOF / VAN ACK
Peter / Jane KELLY
预期结果:
Alex * Sandrine SINNOF * VAN ACK
Peter * Jane KELLY
我在这里做错了什么?
【问题讨论】:
-
因为您一直在替换
p1.[Name],而不是p1.[Name],然后是p2.[Name],然后是p3.[Name]。不过,就我个人而言,我建议只嵌套REPLACE函数。如果您使用的是完全受支持的 SQL Server 版本,那么TRANSLATE将是一个更好的选择。 -
@Larnu 非常感谢!傻我!
标签: sql-server tsql special-characters