在条件语句中使用Replace函数

问题描述 投票:-1回答:1

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

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函数根据后面的逗号分隔第4个字符,并删除起始空格和尾随空格。

2-此外,如果有任何点,它将被''替换

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

现在,我不理解的部分来自第二行。如果我们已经使用替换功能去除点,为什么我们再次使用它?谢谢

sql
1个回答
3
投票

replace()条件下的whenreplace()条件下的then无关。

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

所以,你需要重复when中的表达式。如果只想输入一次表达式,可以使用子查询,CTE或apply

© www.soinside.com 2019 - 2024. All rights reserved.