我必须处理我以前的同事编写的脚本。现在,脚本的一部分对我来说没有意义;我认为替换功能是多余的,我想知道您对此的看法。
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函数去除了点,为什么还要再次使用它呢? 谢谢
答案 0 :(得分:3)
处于replace()
条件的when
与处于replace()
条件的then
无关。
没有数据被“原地”修改。实际上,SQL select
语句根本不会修改数据。
因此,您需要在when
中重复该表达式。如果只想键入一次表达式,则可以使用子查询,CTE或apply
。