匹配子字符串

时间:2015-05-13 23:23:37

标签: mysql

我该如何进行以下查询?我希望匹配整个字符串减去最后两个字符。在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%'

1 个答案:

答案 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