mysql - 如何将值拆分为多行(MySQL)

标签 mysql sql split substring

我想在 SQL 中将一行拆分为多行。

例如,我有'A ADCT DROP INCALL -',其中包含空格和“-”,并且我希望这些值在多行中保持独立.

原始结果:

SELECT statuses FROM campaigns;
+-----------------------------------------+
| RESULT OF QUERY                         |
+-----------------------------------------+
| A ADCT DROP INCALL -                    |
+-----------------------------------------+

结果必须喜欢:

+-----------------------------------------+
| RESULT OF QUERY                         |
+-----------------------------------------+
| A                                       |
| ADCT                                    |
| DROP                                    |
| INCALL                                  |
+-----------------------------------------+

我尝试使用 SUBSTRING_INDEX ,例如:

SELECT status
FROM statuses
WHERE statuses.status NOT IN (SELECT SUBSTRING_INDEX(TRIM(dial_statuses)," ", 1) FROM campaigns WHERE campaign_id = '4000')
ORDER BY STATUS;

抱歉,我知道这是很基本的。

最佳答案

我相信你可以这样做:

SELECT
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) 
  name
FROM
  numbers 
INNER JOIN tablename ON CHAR_LENGTH(tablename.name)
 -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1
ORDER BY
  id, n

请参阅 fiddle here .

如果无法创建表,则解决方案可以是:

SELECT
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) 
  name
FROM
  (select 1 n union all
   select 2 union all select 3 union all
   select 4 union all select 5) numbers 
INNER JOIN tablename ON CHAR_LENGTH(tablename.name)
 -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1
ORDER BY
  id, n

fiddle 的例子是 here .

关于mysql - 如何将值拆分为多行(MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45940508/

相关文章:

sql - Cosmos 批量读取项查询

Javascript 选择保存 split() 的一个索引

PHP 将类对象数组绑定(bind)到列表

android - 发送短信android后更新数据库

mysql - Bluehost Symfony 共享托管数据库parameters.yml 设置问题

php - 如何使用 MySQL 查询从数据库中的所有行中查找相似结果

MySQL选择最后一条记录并更新它

mysql - SQL LIKE 和 OR 条件,

c++ - 迭代一个字符串,但将分隔符保留在子字符串中,包括其他规则

r - 在 R 中特殊字符首次出现之前获取所有字符