如何在数据库中查找针 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 在 table 列中,列名是 wp_link_chk

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

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

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

嗯,最接近这些的方法是使用 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 匹配 select 行,这些行在 wp_link_chk 列中包含 http、www 或 .com,使用以下查询。

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

使用 MySQL 函数 LOCATE 你可以使用类似

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

编辑:请注意,这种方法当然可以 return 多条记录,例如,如果 "http://www.example.com""http""www" 和 [=15= 匹配].