Mysql知道匹配的是哪一列

标签 mysql

表:

ID  English_name        Gujarati_name    English_short_name  Gujarati_short_name
1   2048 TWINKLE POUCH  ૨૦૪૮ ટ્વિન્કલ પાઉચ  2048 TWINKLE POUCH  ૨૦૪૮ ટ્વિન્કલ પાઉચ
2   2051 TWINKLE POUCH  ૨૦૫૧ ટ્વિન્કલ પાઉચ  2051 TWINKLE POUCH  ૨૦૫૧ ટ્વિન્કલ પાઉચ
3   1626 POUCH          ૧૬૨૬ પાઉચ        1626 POUCH          ૧૬૨૬ પાઉચ
4   1618 POUCH          ૧૬૧૮ પાઉચ        1618 POUCH          ૧૬૧૮ પાઉચ

查询:

SELECT `item`.`id`, 
       `item`.`english_name`, 
       `item`.`gujarati_name`, 
       `item`.`english_short_name`, 
       `item`.`gujarati_short_name` 
FROM   `item` 
WHERE  `english_name` LIKE '%twink%' escape '!' 
        OR `gujarati_name` LIKE '%twink%' escape '!' 
        OR `english_short_name` LIKE '%twink%' escape '!' 
        OR `gujarati_short_name` LIKE '%twink%' escape '!' 

预期结果:

ID  English_name        Gujarati_name    English_short_name  Gujarati_short_name  Matching
1   2048 TWINKLE POUCH  ૨૦૪૮ ટ્વિન્કલ પાઉચ  2048 TWINKLE POUCH  ૨૦૪૮ ટ્વિન્કલ પાઉચ  English_name, English_short_name 
2   2051 TWINKLE POUCH  ૨૦૫૧ ટ્વિન્કલ પાઉચ  2051 TWINKLE POUCH  ૨૦૫૧ ટ્વિન્કલ પાઉચ  English_name, English_short_name 
3   1626 POUCH          ૧૬૨૬ પાઉચ        1626 POUCH          ૧૬૨૬ પાઉચ
4   1618 POUCH          ૧૬૧૮ પાઉચ        1618 POUCH          ૧૬૧૮ પાઉચ

任何人都可以告诉我如何知道匹配的列以便我只能打印该列的数据,而不能打印任何其他列的数据。请帮助我编辑此问题,以便对其他人有所帮助。抱歉,如果我犯了任何语法错误。

最佳答案

查找符合您条件的列名可能看起来很难看

SELECT `item`.`id`, 
       `item`.`english_name`, 
       `item`.`gujarati_name`, 
       `item`.`english_short_name`, 
       `item`.`gujarati_short_name` ,
CONCAT_WS(
',',
CASE WHEN `english_name` LIKE '%twink%' ESCAPE '!'  THEN 'english_name' ELSE NULL END,
CASE WHEN `gujarati_name` LIKE '%twink%' ESCAPE '!'  THEN 'gujarati_name' ELSE NULL END,
CASE WHEN `english_short_name` LIKE '%twink%' ESCAPE '!'  THEN 'english_short_name' ELSE NULL END,
CASE WHEN `gujarati_short_name` LIKE '%twink%' ESCAPE '!'  THEN 'gujarati_short_name' ELSE NULL END
)  matching
FROM   `item` 
WHERE  `english_name` LIKE '%twink%' ESCAPE '!' 
        OR `gujarati_name` LIKE '%twink%' ESCAPE '!' 
        OR `english_short_name` LIKE '%twink%' ESCAPE '!' 
        OR `gujarati_short_name` LIKE '%twink%' ESCAPE '!'

Demo

关于Mysql知道匹配的是哪一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47886217/

相关文章:

javascript - 将 jQuery/JavaScript 函数应用于 jTable 检索的 SQL 数据

mysql - 将 12 小时添加到 mysql 当前时间戳

mysql - 我应该改变这个数据库设计中的任何内容吗?

php - 插入大量数据[PHP、MySQL]

mysql - 分组、计数和连续圈数

php - SQL 以不同格式保存时间 (mm :ss, mmm)

sql - 最有效的 MySQL 查询从相同的内存表更新表

Mysql: my.cnf 修改不生效

php - 使用 PHP 在页面上显示来自 MySQL 数据库的信息

mysql - 带有 from 子句的 sql update 语句进行验证?