如何在数据库SQL中找到针


How to find a needle in database sql

我有搜索数据库的查询,即

 $linkcdb = $wpdb->query($wpdb->prepare("SELECT wp_link_factor WHERE wp_link_chk = %s", $u));

哪里$u = is nay link;例如;

$u = www.kaka.com
$u = popopo.com
$u = http://jajaja.com

我有一个数据库,其中www, http and .com在表的列中,列名是wp_link_chk

现在我面临的问题是用户输入是一个完整的链接,就像www.example.com在数据库中我只有.com, http and www

想要的是我如何比较我的完整句子,看看句子中是否有针 http,或 www 或 .com?

执行此操作的功能是stristr($u,'http')所以我将如何在数据库中使用此功能,我的意思是我将如何检查wp_link_chk列作为我的句子的针?

使用

MySQL 函数LOCATE你可以使用类似的东西

... WHERE LOCATE( wp_link_chk, :userInput ) > 0

编辑:请注意,这种方法当然可能会返回多个记录,例如,如果"http://www.example.com""http""www"".com"匹配。

嗯,匹配这些的最接近的方法是使用 mysql LIKE 函数。

实际语句类似于

SELECT wp_link_factor WHERE wp_link_chk LIKE %www.example.com% 

但是由于您使用的是wordpress准备语句,因此请像这样使用它:

$linkcdb = $wpdb->query($wpdb->prepare("SELECT wp_link_factor WHERE wp_link_chk LIKE %s", '%' . $u . '%'));

--更新--

为了完成,您可以使用 REGEXP 匹配使用以下查询来选择wp_link_chk列中包含 http、www 或 .com 的行。

SELECT wp_link_factor WHERE wp_link_chk REGEXP '(http)|(www)|('.com)'