我该如何进行以下查询?我希望匹配整个字符串减去最后两个字符。在python中它将是:
>>> x='hello'
>>> x[:-2]
'hel'
从概念上讲,在SQL中它将是:
select * from main_tmp where vid_country_key[:-2] = '2wh_gQwkMQg'
我怎么会这样做?以上会比以下更快或更慢:
select * from main_tmp where vid_country_key LIKE '2wh_gQwkMQg%'
答案 0 :(得分:3)
正如您可能知道的那样,您提供的两个示例查询并不等效,但更改第二个示例应该提供与第一个相同的结果,并且可能保留第二个的潜在索引优势:
target
如果它不使用索引(假设有索引),您可以尝试将deferred.defer(dosomething, _target="deferred")
更改为SELECT *
FROM main_tmp
WHERE vid_country_key LIKE '2wh_gQwkMQg%'
AND LENGTH(vid_country_key) = LENGTH('2wh_gQwkMQg')+2
;
,或者查看AND
。
哦,为了记录,如果你想知道第一个例子的实际语法,那就是
HAVING
如果字段的长度小于2,则需要USE INDEX
。