繁体   English   中英

如何在一行中拆分逗号分隔值,然后在 sql 查询中按数字列出? [复制]

[英]How can I split comma separated values in a single row and then list by number in a sql query? [duplicate]

我的表中有一个列(表名是 rtp2k),其中包含用逗号分隔的多个值。 我想拆分这些值,然后按数字列出它们。

我的专栏目前看起来像:

+-------+
| A2    | 
| a,b,c | 
| d,e,f |
| c,b   |
| a,d,f |
| d,e,f |
+-------+ 

我知道这不是最佳实践。 我没有创建这个表。 我只是应该从中提取数据以在截止日期前使用 mysqli、php 和 google 图表制作图表。

我当前的查询看起来像这样,但我不需要那里的 id,我想按值计算它们,而不是单独列出每个。

select
  rtp2k.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(rtp2k.a2, ',', numbers.n), ',', -1) a2
from
  (select 1 n union all
   select 2 union all select 3 union all
   select 4 union all select 5) numbers INNER JOIN rtp2k
  on CHAR_LENGTH(rtp2k.a2)
     -CHAR_LENGTH(REPLACE(rtp2k.a2, ',', ''))>=numbers.n-1
order by
  id, n

我希望查询返回如下内容:

a - 2 
b - 2 
c - 2 
d - 3
e - 2
f - 3

基本上按值分隔字符串并列出每个字符串的数量。

我目前的结果是: 这张表

如有任何帮助,我将不胜感激。

SELECT ColumnID, Column1, value  --Do not change 'value' name. Leave it as it is.
FROM tbl_Sample  
CROSS APPLY STRING_SPLIT(Tags, ','); --'Tags' is the name of column containing comma separated values

所以我们有这个: tbl_Sample :

ColumnID|   Column1 |   Tags
--------|-----------|-------------
1       |   ABC     |   a,b,c    
2       |   PQR     |   d,e,f

运行此查询后:

ColumnID|   Column1 |   value
--------|-----------|-----------
1       |   ABC     |   a
1       |   ABC     |   b
1       |   ABC     |   c
2       |   PQR     |   d
2       |   PQR     |   e
2       |   PQR     |   f

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM