假设我有一个带有列名的表users表,它有以下记录:
- 查理
- 光泽
- 查尔
- 恩
- 阿诺德
我可以在不循环每个项目的情况下获得与“charlie sheen”匹配的记录吗?
更具体地说:有没有办法获取包含作为给定字符串的子字符串的字段的记录?
假设我有一个带有列名的表users表,它有以下记录:
我可以在不循环每个项目的情况下获得与“charlie sheen”匹配的记录吗?
更具体地说:有没有办法获取包含作为给定字符串的子字符串的字段的记录?
好吧,你可以做你想做的事:
select * from people
where 'charlie sheen' regexp name;
但是请记住,这将是低效的:根据问题的本质,您必须将每一行视为正则表达式以查看它是否匹配。
name
如果列可能包含在正则表达式中具有特殊含义的字符,也会出现问题。
编辑:还值得一提的是,如果您允许不受信任的用户在数据库中输入名称(例如来自网站),则将其视为正则表达式是一个潜在的安全问题。
要获取类似于给定子字符串的所有数据,我使用它。
select * from [table] where [column] like %charlie sheen%