首页 > 解决方案 > 用尾随和前导空格突出显示行

问题描述

我想突出显示带有尾随和前导空格的行。我有以下查询,但想知道是否有更好更有效的方法来实现这一点。

SELECT * 
FROM DummyTable lc 
WHERE 
    (lc.Code LIKE '% ' OR lc.Code LIKE ' %' or lc.Code like '%  % %' OR lc.Code like '% %  %') 
    AND (lc.StartDate <= getdate() AND lc.EndDate > getdate()) 
    AND (lc.CodeTypeID <> 27) 
ORDER BY 4 DESC

请注意,我不想从“代码”字段中删除空格,而只是在我的结果集中突出显示。

标签: sqlsql-server

解决方案


没有更有效的方法,但可以减少比较次数:

WHERE CONCAT(' ', lc.Code, ' ') LIKE '%  %' AND
      lc.StartDate <= getdate() AND
      lc.EndDate > getdate() AND
      lc.CodeTypeID <> 27 

这会在开头和结尾添加一个空格,然后连续查找两个空格(尽管问题是如何表达的,这似乎是您的意图)。

不幸的是,您几乎无法提高性能,因为所有的比较都是不等式的。


推荐阅读