【问题标题】:Multiple Replace functions on same column in SQL ServerSQL Server 中同一列的多个替换函数
【发布时间】:2020-05-13 03:02:21
【问题描述】:

在将多个替换/转换函数组合到同一个查询中时,我需要帮助。

我已经有一个针对特定列的预先存在的 select 语句(col_name):

CAST(REPLACE(SUBSTRING(col_name, 1, 4000), '''', '''''') AS VARCHAR(4000)) AS col_name

我想包含一个命令来替换列中的制表符(使用 Visual Studio 从 SQL Server 加载到 IBM db2,并且我在制表符分隔表的列内有制表符...超级有趣):

REPLACE(col_name, CHAR(9), '')

我将如何结合这些?

【问题讨论】:

标签: sql sql-server


【解决方案1】:

发表你的第一句话:

CAST(replace(substring(col_name,1,4000),'''','''''') AS VARCHAR(4000)) as col_name

将第二个语句中的 col_name 替换为上面的 cast 语句:

REPLACE(CAST(replace(substring(col_name,1,4000),'''','''''') AS VARCHAR(4000)), CHAR(9), '') as col_name

【讨论】:

  • 它工作,但不是很可读。您可能应该考虑这个替代更优雅的解决方案sqlservercentral.com/forums/topic/…
  • 这正是问题所问的。此外,即使您链接到的帖子也指出:“将所有那些讨厌的逗号和括号放在正确的位置可能会很尴尬?为顶级性能付出的代价很小。嵌套的 REPLACE 速度非常快。”
  • 是的,但我会避免在同一个查询中链接其中的 10 个。它不可读,也不容易维护。
  • 因此,您可以使用需要更长时间并使用更多处理的代码,因为它更易于阅读,明白了。
  • 是的。可维护性在流程设计中至关重要。您每次都必须权衡成本/收益。显然,如果性能受到显着影响,则选择性能更高的解决方案。
猜你喜欢
  • 2021-10-25
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2015-08-07
  • 2022-01-01
  • 2020-10-21
  • 1970-01-01
相关资源
最近更新 更多