Regex SQL正则表达式搜索全名
这可能真的很简单。 所以,我有这个表,用户 有“全名”字段的 假设我有这样的条目Regex SQL正则表达式搜索全名,regex,Regex,这可能真的很简单。 所以,我有这个表,用户 有“全名”字段的 假设我有这样的条目 "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 = Sm
"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搜索中的功能。如果可以的话,看看这个 使用类似SQL的命令和“%”运算符。 比如:-
SELECT * FROM Names WHERE name LIKE "%Doe%";
使用类似SQL的命令,并使用“%”运算符。 比如:-
SELECT * FROM Names WHERE name LIKE "%Doe%";
你不需要正则表达式本身。翻译您的需求:
... WHERE (full_name LIKE 'Doe%' -- query + "wildcard" (that is, starts with query)
OR -- or
full_name LIKE '% Doe%) -- space + query anywhere
如果您使用的是参数化查询(您应该这样做),则LIKE模式操作数的构造会变得稍微复杂一些:。。。比如(?| |'%')或者。。。比如(“%”| |?| |“%”)
请注意,您的数据库可能会以稍微不同的方式拼写字符串连接。(例如,MySQL使用函数CONCAT()而不是ANSI double pipes。)您本身不需要正则表达式。翻译您的需求:
... WHERE (full_name LIKE 'Doe%' -- query + "wildcard" (that is, starts with query)
OR -- or
full_name LIKE '% Doe%) -- space + query anywhere
如果您使用的是参数化查询(您应该这样做),则LIKE模式操作数的构造会变得稍微复杂一些:。。。比如(?| |'%')或者。。。比如(“%”| |?| |“%”)
请注意,您的数据库可能会以稍微不同的方式拼写字符串连接。(例如,MySQL使用函数CONCAT()而不是ANSI double pipes。)这行不通,因为像“jdoe martin”这样的东西是有效的,而且不应该有效。没错,pilcrow的答案在这方面是完美的。就像和%-SQL通配符搜索一样,大多数情况下都是这样。这是行不通的,因为像“jdoe martin”这样的东西是有效的,而且不应该有效。没错,皮尔克罗的答案在这方面是完美的。就像和-SQL通配符搜索一样,它可以让您在大部分情况下都能找到它。