1

这可能真的很简单。所以,我有这张表,用户有一个字段'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'

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

或(结果字符串中空格后的第一个字符)查询

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

4

2 回答 2

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 双管道。)

于 2012-07-21T22:39:58.687 回答
0

Use the SQL LIKE command, with the '%' operator. Something like:-

    SELECT * FROM Names WHERE name LIKE "%Doe%";
于 2012-07-21T22:22:23.123 回答