在条件语句中使用替换功能

时间:2019-02-12 16:16:55

标签: sql

我必须处理我以前的同事编写的脚本。现在,脚本的一部分对我来说没有意义;我认为替换功能是多余的,我想知道您对此的看法。

WHEN (ISNUMERIC(REPLACE(LTRIM(RTRIM(dbo.UFN_SEPARATES_COLUMNS(x, 4, ','))), '.', '')) = 1)

THEN CAST(REPLACE(dbo.UFN_SEPARATES_COLUMNS(x, 4, ','), '.', '') AS BIGINT) 

所以,对于第一行,

1- UFN_SEPARATES_COLUMNS函数根据其后的逗号分隔第四个字符,并删除起始空格和结尾空格。

2-同样,如果有任何点,它将被替换为

3-最后,它将评估第四个字符是否具有数字值

现在,我不了解的部分来自第二行。如果我们已经使用了replace函数去除了点,为什么还要再次使用它呢? 谢谢

1 个答案:

答案 0 :(得分:3)

处于replace()条件的when与处于replace()条件的then无关。

没有数据被“原地”修改。实际上,SQL select语句根本不会修改数据。

因此,您需要在when中重复该表达式。如果只想键入一次表达式,则可以使用子查询,CTE或apply