不确定我还能在哪里问这个问题...但我正在查看我们系统中的一些代码,并在我们的数据清理过程之一中遇到了这个...
UPDATE #X SET
Email = CASE
WHEN LEFT(Email, 1) = ' ' OR RIGHT(Email, 1) = ' '
THEN LTRIM(RTRIM(Email))
ELSE Email
END
这对我来说似乎毫无意义,并且不知道为什么它不只是写成:
UPDATE #X SET Email = LTRIM(RTRIM(Email))
是否有一些我不知道的好处或者可能存在一些数据问题,例如隐式转换错误或它正在避免的问题?有很多像这样的不必要的代码,我想开始清理。
它并没有明显节省时间。我运行了统计 IO 和时间以及查询计划,它们都是相同的。
最佳答案
这毫无意义,但出于不同的原因。大概应该写成:
UPDATE #X
SET Email = LTRIM(RTRIM(Email))
WHERE Email LIKE ' %' OR EMAIL LIKE '% ';
如果值不会更改,则没有理由尝试更新。
注释:
SET
实际上应该放在设置值的第一行。好吧,这是一种审美观点。- 我认为
LIKE
在寻找空格时更清晰。另外,它更强大,因为它可以寻找字符组。而且,它可以是可控制的,允许使用索引(尽管在本例中不是)。
关于sql - LTRIM/RTRIM - 但只有第一个/最后一个字符是空格时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46228842/