【发布时间】:2021-08-28 21:06:20
【问题描述】:
我正在尝试替换列中的几个字符串并将它们添加到新列中。但是,查询处理时间太慢了,我也觉得“喜欢”让它变得更慢。有没有其他替代方法可以减少处理时间?这是我当前的代码:
SELECT TOP 10
*,
REPLACE(REPLACE(REPLACE(REPLACE
(REPLACE(_NAME,'Test.S103.S103.SVs.Nozzle1.si_InTemp1','Temp1'),
'Test.S103.S103.SVs.Nozzle1.si_InTemp2','Temp2'),
'Test.S103.S103.SVs.Nozzle1.si_InTemp3','Temp3'),
'Test.S103.S103.SVs.Nozzle1.si_InTemp4','Temp4'),
'Test.S103.S103.SVs.Nozzle1.si_InTemp5','Temp5') As 'temperature_test'
FROM
[MGBAIS].[dbo].[Temperature]
WHERE
_NAME LIKE '%Test%'
ORDER BY
_TIMESTAMP DESC
【问题讨论】:
-
为什么不直接将 'Test.S103.S103.SVs.Nozzle1.si_In' 替换为空白?
-
空白是什么意思?我需要将其替换为特定值,例如“test1”,因为原始列包含一个长字符串
-
在您的示例中,您将 *Temp1 替换为 Temp1,将 *Temp2 替换为 Temp2 等等。这不是你的实际要求吗?
-
Shree.Pat18 试图向您展示的是,您向我们展示的每个案例都在用其他东西替换“Test.S103.S103.SVs.Nozzle1.si_In”,然后是其他东西.您可以通过将所有那些 Replace 函数替换为表示 Replace(_Name,'Test.S103.S103.SVs.Nozzle1.si_In','') 的 ONE 来大大简化此示例
-
似乎每个人都在关注 REPLACE - 你有一些很好的建议。至于性能,您正在寻找其中包含“test”的任何字符串 - 但您只是替换字符串以 test 开头的位置。所以 - 更改为:LIKE 'Test.%' - 如果你在该列上有一个索引,它应该表现得更好。
标签: sql sql-server replace