sql - 用尾随和前导空格突出显示行
问题描述
我想突出显示带有尾随和前导空格的行。我有以下查询,但想知道是否有更好更有效的方法来实现这一点。
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
请注意,我不想从“代码”字段中删除空格,而只是在我的结果集中突出显示。
解决方案
没有更有效的方法,但可以减少比较次数:
WHERE CONCAT(' ', lc.Code, ' ') LIKE '% %' AND
lc.StartDate <= getdate() AND
lc.EndDate > getdate() AND
lc.CodeTypeID <> 27
这会在开头和结尾添加一个空格,然后连续查找两个空格(尽管问题是如何表达的,这似乎是您的意图)。
不幸的是,您几乎无法提高性能,因为所有的比较都是不等式的。
推荐阅读
- image - 多阶段中矩形和图像的属性绑定 - JavaFX Netbeans
- coq - 我如何从错误的假设中证明错误?
- active-directory - DNS中的“与父文件夹相同”是什么意思?
- arrays - 如何编写一个循环提示用户输入温度值并将该值存储在数组中?
- python - 从外部目录运行python脚本
- flutter - 无限垂直空间
- ios - 有没有办法从 swift 中的 UISwitch 的 IBAction 中将字符串附加到 swift 中的字符串数组?
- python - 为什么这段代码不会导致竞争条件?
- python - 如何在每个数据帧上附加最后一行
- flutter - 我怎样才能离开一个功能?飞镖/颤振