-1

假设我有一个带有列名的表users表,它有以下记录:

  • 查理
  • 光泽
  • 查尔
  • 阿诺德

我可以在不循环每个项目的情况下获得与“charlie sheen”匹配的记录吗?

更具体地说:有没有办法获取包含作为给定字符串的子字符串的字段的记录?

4

2 回答 2

2

好吧,你可以做你想做的事:

select * from people
    where 'charlie sheen' regexp name;

请参阅 SQLFiddle 示例

但是请记住,这将是低效的:根据问题的本质,您必须将每一行视为正则表达式以查看它是否匹配。

name如果列可能包含在正则表达式中具有特殊含义的字符,也会出现问题。

编辑:还值得一提的是,如果您允许不受信任的用户在数据库中输入名称(例如来自网站),则将其视为正则表达式是一个潜在的安全问题。

于 2013-01-17T11:37:19.800 回答
-2

要获取类似于给定子字符串的所有数据,我使用它。

select * from [table] where [column] like %charlie sheen%

于 2013-01-17T11:42:30.283 回答