使用sql查询搜索inbetween字符串

时间:2016-08-09 11:31:36

标签: mysql sql regex

wp_postmetameta_value中包含值http/google.co.in/

如果用户搜索http/google.co.in/testing,则结果集应包含http/google.co.in/

我尝试了以下查询:

SELECT * FROM wp_postmeta WHERE meta_value LIKE '%http/google.co.in/testing%' 

但它未返回预期结果。

我如何获得理想的结果?如何使用正则表达式来获得此结果?

3 个答案:

答案 0 :(得分:1)

'%http/google.co.in/testing%'表示您正在查找包含“http / google.co.in / testing”的任何字符串,因此'http/google.co.in/'不会返回任何结果,因为它不包含您的字符串正在找。 您可以使用SUBSTR()搜索字符串中的部分。

答案 1 :(得分:1)

如果您使用sql:..... LIKE '%http/google.co.in/testing%',那么DB将查找包含"http/google.co.in/testing"的任何字符串。请注意,您所需的结果内部不包含"testing"

让我们试试:

SELECT * FROM wp_postmeta WHERE meta_value LIKE CONCAT('%', SUBSTR('http/google.co.in/testing', 1, 18), '%')

答案 2 :(得分:0)

正如其他人所指出的,LIKE搜索包含整个搜索字符串的字符串(以及%s所在的任何其他字符串),而不是包含字符串子字符串的字符串。我不知道是否有这样的命令。 你建议也许正则表达式是你的答案。事实上,MySQL确实有一个正则表达式命令,快速谷歌搜索会向你显示这里的文档:http://dev.mysql.com/doc/refman/5.7/en/regexp.html 您是否需要进一步帮助确定您的正则表达式,还是这样就够了? 如果您需要进一步的帮助,您必须明确说明正则表达式将要搜索的内容,因为您必须了解搜索字符串的组成部分才能知道什么是常量以及什么是变量。< / p>