【发布时间】:2021-01-20 03:57:13
【问题描述】:
我需要更新一个字符串来修改任何别名——可以是“H1.”、“H2.”、“H3.”...等等——全部为“S”。并且正在努力找出逻辑。 例如我有这个:
'H1.HUB_CUST_ID、H2.HUB_SALE_ID、H3.HUB_LOC_ID'
但我想要这个:
'S.HUB_CUST_ID、S.HUB_SALE_ID、S.HUB_LOC_ID'
如果你可以在 REPLACE 中使用通配符,我会做这样的事情 REPLACE(@string, 'H%.H', 'S.H')。
理论上,可以有多少个 H# 别名是没有限制的。实际上,几乎肯定会少于 10 个。
有没有比单独嵌套替换 H1 - H10 更好的方法,这在脚本中看起来很乱,如果将来连接更多表,风险很小?
【问题讨论】:
-
这在 SQL Server 中很难实现,它基本上不支持正则表达式。我投票赞成首先规范化您的数据,然后在数据库之外处理此要求。
-
谢谢蒂姆。我已经对其进行了编辑以简化我的问题,但实际上该字符串是一个长 SQL 脚本,除了这些别名之外几乎完全符合要求 - 所以规范化在这里并不真正适用。
-
@JShark 在这种情况下,最好使用除 T-SQL 之外的任何其他工具。应该没有任何理由实时执行此类转换,您应该能够更早地生成正确的脚本。您可以使用 Powershell 来构建它并使用正则表达式进行替换、小型 C# 程序或编辑器的正则表达式替换功能
标签: sql sql-server replace sql-server-2014