【问题标题】:SQL Query with one column and multiple LIKEs具有一列和多个 LIKE 的 SQL 查询
【发布时间】:2016-10-12 17:23:08
【问题描述】:

我得到了一个表格,其中有一列包含诸如 Driver||Helper||Garden 之类的内容。我想将此表导出到一个新系统,其中每个用户技能都有不同的列(应该是)。

问题:如何在一个不错的 SQL 导出中获取此类信息。

SELECT user_id, driver, helper, garden FROM `ujc72_comprofiler` WHERE cb_erfahrungen LIKE "%Driver%"

为我提供具有特定技能的用户,但我希望一个用户的多个列用于我的导出。

【问题讨论】:

  • 仅供参考:“我对每个用户技能都有不同的列” 不是 “应有的”;它应该是一个包含大约两列的单独表格,一列引用用户,另一列列出(或引用)用户拥有的技能;在此user_skills 表中,每个用户记录都有 0 到多个 记录。 ...尽管单独的列仍然比您现在显然拥有的更进一步。
  • 这是一个听起来很糟糕的架构
  • ujc72_comprofiler的结构是什么? cb_erfahrungen 在哪里??

标签: mysql sql sql-like nested-queries


【解决方案1】:

您需要拆分字符串。因此,它将 Driver|Helper|Garden 划分为 Driver、Helper 和 Garder 列。

mysql没有这个功能。您必须自己创建它。 检查此链接:https://blog.fedecarg.com/2009/02/22/mysql-split-string-function/


另外,您可以使用SUBSTRING_INDEX 函数:

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'

【讨论】:

    【解决方案2】:

    只需使用此查询:select column_name, column_name, column_name from table_name where column_name like '%driver%'。我想这就是你要找的。​​p>

    【讨论】:

      【解决方案3】:

      您在 SQL 中发现这很困难,因为在准备查询时必须修复列的选择列表。 SQL 没有允许自动扩展结果集中的列数以适应数据中发现的模式的功能。

      所以不要尝试使用 SQL 来执行此操作。编写一个脚本来运行一个简单的 SQL 查询,然后在脚本代码中拆分字符串。

      几乎任何语言都具有轻松将字符串拆分为数组的功能。

      为工作使用正确的工具。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        相关资源
        最近更新 更多