【问题标题】:MySQL query to SELECT rows with LIKE and create new column containing the matched stringMySQL 查询使用 LIKE 选择行并创建包含匹配字符串的新列
【发布时间】:2016-02-03 17:50:05
【问题描述】:

我需要一些关于 MySQL 查询的帮助,我现在正在苦苦挣扎。

所以,我正在尝试从与app 等特定字符串匹配的表中创建对SELECT 行的MySQL 查询。 我的桌子是这样的:

+-----+--------------+
| id  | name         |
+-----+--------------+
|   1 | Green Apple  |
|   2 | Big Orange   |
|   3 | application  |
+-----+--------------+

我可以找到包含app 字符串的所有行,其中包含SELECTLIKE

但是,我还想创建包含来自name 列的字符串与app 匹配的新列,并保持数据库区分大小写的格式,即使用app 作为匹配短语,新列将包含@987654330 @ 和app 根据name 中的字符串格式进行填充。

到目前为止,我的查询是这样的:

SELECT *, 'what_to_put?' as new_column FROM table WHERE name LIKE '%".$app."%'

所需的输出如下:

+-----+--------------+-------------+
| id  | name         | new_column  |
+-----+--------------+-------------+
|   1 | Green Apple  |     App     |
|   2 | application  |     app     |
+-----+--------------+-------------+

知道如何实现吗?

【问题讨论】:

    标签: mysql select compare match sql-like


    【解决方案1】:

    如果没有单独的正则表达式库,则需要使用内置的string functions 查找匹配的location,然后提取匹配的sub-string

    SELECT 
      id, 
      name, 
      substring(name, locate('app', name), length('app')) as new_column 
    FROM yourTable 
    WHERE name LIKE '%app%'
    

    结果如下:

    +----+-------------+------------+
    | id |    name     | new_column |
    +----+-------------+------------+
    |  1 | Green Apple | App        |
    |  3 | application | app        |
    +----+-------------+------------+
    

    Sql Fiddle Here

    【讨论】:

    • 谢谢,伙计!很好的解决方案,正是我所需要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2021-12-09
    • 2012-08-14
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多