MySQL:选择列是给定字符串一部分的行

时间:2016-05-06 14:07:20

标签: php mysql sql regex wildcard

我搜索一种在表条目中查找给定字符串的一部分的方法。 该字段是表中的varchar。

搜索

  

/品牌/品牌/ actona /厨房物品/产品/ 01945

并希望找到这一行:

/brands/brand/actona/$

- 或者这一行

/brands/brand/actona/kitchen-$

有没有办法解决这个问题?问题是该表至少有57,000个条目。我从一个旧的(太大的)nginx-config文件导入数据,这些文件都是永久重定向。

更新: 我需要与“LIKE”大致相反,因为我搜索的字符串的一部分存储在带有通配符($)的表中,它也可以匹配另一个以相同的字符串开头的字符串。 /brands/brand/actona/$可以与/brands/brand/actona/123匹配,也可以与/brands/brand/actona/abc/def匹配。

因此,当我搜索/brands/brand/actona/abc/def甚至/brands/brand/actona/abc/def/xyz时,需要匹配行/brands/brand/actona/$

我实际上尝试从nginx.config文件中外包57k永久重定向,以避免在每个请求上检查6MB配置文件。

对于我可怕的英语,我很抱歉:(

2 个答案:

答案 0 :(得分:2)

也许像

SELECT * FROM TABLE
WHERE '/brands/brand/actona/kitchen-article/item/01945'
LIKE CONCAT('%', URLCOLUMN, '%');

答案 1 :(得分:0)

这样的事情怎么样?

SELECT * FROM table
WHERE
column REGEXP '(/[a-zA-Z0-9-]+)+\$?'