SQL正则表达式搜索全名

时间:2012-07-21 22:15:58

标签: regex

这可能很简单。 所以,我有这个表,用户 这有一个字段'full_name'

说我有像

这样的条目
"John Doe"
"Jane Doe"
"Colby Smith Jr"
"Apple Smith"

我需要一个适合这些条件的正则表达式搜索:

query = John => return 'John Doe'
query = Doe => return 'John Doe', 'Jane Doe'
query = Apple => return 'Apple Smith'
query = Smith => return 'Colby Smith Jr', 'Apply Smith'
query = Apple Smith => return 'Apple Smith'
query = Smith Jr => return 'Colby Smith Jr'

基本上,我需要一个可以搜索的正则表达式函数 查询*(*是通配符?)

OR (在我的结果字符串中的空格后面的第一个字符)查询

这有意义吗? 基本上,我试图模仿instagram搜索中的功能。如果可以的话,检查一下。

2 个答案:

答案 0 :(得分:1)

您本身不需要正则表达式 。翻译您的要求:

... WHERE (full_name LIKE 'Doe%'    -- query + "wildcard" (that is, starts with query)
           OR                       -- or
           full_name LIKE '% Doe%)  -- space + query anywhere

如果你正在使用参数化查询 - 你应该 - 构建LIKE模式操作数变得有点复杂:... LIKE (? || '%') OR ... LIKE ('% ' || ? || '%')

请注意,您的数据库可能会有点不同地拼写字符串连接。 (例如,MySQL使用函数CONCAT()而不是ANSI双管道。)

答案 1 :(得分:0)

使用SQL LIKE命令和'%'运算符。 类似的东西: -

    SELECT * FROM Names WHERE name LIKE "%Doe%";