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


MySQL: Select rows where a column is part of a given string

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

寻找

/品牌/

品牌/阿克托纳/厨房文章/项目/01945

并想找到这一行:

/brands/brand/actona/$

-或者也许是这一行

/brands/brand/actona/kitchen-$

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

更新:我需要与"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的配置文件。

我很抱歉我糟糕的英语:(

也许像

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

这样的事情怎么样?

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