我需要从表中检索行,而不是以某个值开头的字段:
我目前正在这样做一个简单的查询:
SELECT A.ID FROM SCHEMA.TABLE A WHERE A.FIELD NOT LIKE 'WORD%'
但是,我了解到A.FIELD
有时在“WORD”之前包含不同数量的空格。
显然,我可以用另一个通配符重新编写查询,但是这会使它变得不可思议并使其慢下来(这个查询在一个相当大的表上运行并且需要尽可能高效)。
有什么方法可以编写一个可搜索的查询来解决这个问题吗?
答案 0 :(得分:6)
如果由于某种原因无法清理数据,一个选项是向表中添加一个计算列,用于修剪所有前导和尾随空格:
ALTER TABLE YourTable
ADD TrimmedYourColumn as (RTRIM(LTRIM(YourColumn)))
索引计算列:
CREATE INDEX IX_YourTable_TrimmedYourColumn
ON YourTable (TrimmedYourColumn)
现在搜索该列:
SELECT A.ID FROM YourTable A WHERE TrimmedYourColumn NOT LIKE 'WORD%'
答案 1 :(得分:-4)
ltrim怎么样?
SELECT A.ID FROM SCHEMA.TABLE A WHERE ltrim(A.FIELD) NOT LIKE 'WORD%'