【问题标题】:Find a string inside the column name using MySQL query使用 MySQL 查询在列名中查找字符串
【发布时间】:2014-03-04 06:01:27
【问题描述】:

我正在尝试编写一个选择查询来搜索特定列中的字符串。

例如:

+----+------+-------------------------------+
| id | name |           alternate           |
+----+------+-------------------------------+
| 1  | Test | Test,Tests,test,tests,te,test |
| 2  | Demo | Demo.demo,dem,Dem             |
+----+------+-------------------------------+

等等……

我只想写一个查询来检查列名alternate中提交的值名

例如:我将提交名称测试,它应该使用包含

的列名称替代检查是否存在

【问题讨论】:

  • WHERE column LIKE '%string%'

标签: php mysql sql


【解决方案1】:

使用FIND_IN_SET()

$query = SELECT * FROM tablename WHERE FIND_IN_SET('test', alternate);

if(mysql_num_rows($query) > 0){
   //if test was found
} else {
   // test not found
}

更多信息here

【讨论】:

    【解决方案2】:

    mysql中试试这个查询:

    SELECT ID,NAME,ALTERNATE,
    CASE WHEN (FIND_IN_SET(name, alternate) > 0)
    THEN 'TRUE' ELSE 'FALSE' END RESULT FROM TABLE1;
    

    SQL Fiddle

    【讨论】:

      【解决方案3】:

      试试这个

      select count(*) as total from tablename where alternate LIKE %test%
      

      如果返回的total 值大于零,则alternate 列中存在字符串测试

      【讨论】:

        【解决方案4】:

        一种方法是使用字符串函数 INSTR 来检查字符串中是否存在子字符串。你甚至可以在 Substring 和 String 中传递一个变量来检查。

        SELECT IF(INSTR(alternate,'test')! = 0,'Exists', 'Not Exists') as SearchResult FROM table;

        文档可以在以下位置找到:

        http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_instr

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-05
          • 1970-01-01
          • 1970-01-01
          • 2018-12-02
          • 1970-01-01
          • 1970-01-01
          • 2016-06-26
          • 1970-01-01
          相关资源
          最近更新 更多