首页 > 解决方案 > 用于检查前缀、后缀或完整值的 sql 查询

问题描述

我期望获得 1 条记录,但目前我通过使用以下查询获得 0 条记录。如何让它发挥作用?基本上,我用关键字在表中搜索,如果前缀、后缀、关键字的确切值与表值匹配,则记录应该返回。基本上,如果发现与此表值匹配,我将使用此表来禁止虚名

case 1:应该返回一条记录,因为sex它存在于搜索关键字的前缀中

select name from invalid_names_master where
name LIKE '%sexsadf' OR
name LIKE 'sexsadf%' OR
name='sexsadf'

case 2:应该返回一条记录,因为sex它存在于搜索关键字的后缀中

select name from invalid_names_master where
name LIKE '%ertsex' OR
name LIKE 'ertsex%' OR
name='ertsex'

在上述两种情况下

预期输出

`sex`  (i.e 1 record found) 

表: invalid_name_master 在此处输入图像描述

标签: mysqlsql

解决方案


我认为您打算进行反向操作,,如果输入字符串sexsadf包含来自 的任何值,则invalid_name_master标记它。

请尝试以下查询:

select name 
from invalid_names_master 
where
  'sexsadf' LIKE CONCAT('%', name) OR 
  'sexsadf' LIKE CONCAT(name, '%') OR 
  'sexsadf' LIKE name 

推荐阅读