SQL“LIKE”查询找不到我所知道的内容

时间:2011-10-04 22:29:19

标签: mysql sql regex database

我正在尝试识别wordpress安装上的哪些帖子包含空段落,我手动找到一个并单击“编辑”,这就是我所看到的:

img

然后我尝试了一个类似的查询:

SELECT *
FROM `wp_posts`
WHERE `post_content` LIKE '%<p> </p>%'

未返回任何结果,并且我从找到的该行手动复制粘贴"<p> </p>"。我也用这样的模式尝试了REGEXP:

#<p[^>]*>(\s|&nbsp;?)*</p>#

但是仍然没有得到任何结果,我该怎么做才能找到那些空段落?

3 个答案:

答案 0 :(得分:1)

为什么要搜索post_title而不是post_content

SELECT ID
  FROM `wp_posts`
 WHERE `post_content` LIKE '%<p> </p>%'

应该有效。如果您要使用REGEXP并允许包含&nbsp;的段落:

SELECT ID
  FROM `wp_posts`
 WHERE `post_content` REGEXP '<p>[[:blank:]]*(&nbps;)?[[:blank:]]*</p>'

答案 1 :(得分:0)

改变这个:

WHERE `post_title` LIKE '%<p> </p>%'

对此:

WHERE `post_content` LIKE '%<p> </p>%'

再试一次。

答案 2 :(得分:0)

好吧..好像应该工作..

但替代方案可能是使用instr

类似于WHERE instr( post_content, '<p> </p>' ) > 0