我要一张有这些值的桌子
表:文档

id  |       document
----|-------------
1   |   doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
2   |   doc.txt
3   |   doc.txt , doc1.txt
4   |   doc.txt , doc1.txt , doc2.rtf
5   |   doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
6   |   doc.txt , doc1.txt , doc2.rtf , doc3.docx
7   |   doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
8   |   doc.txt , doc1.txt , doc2.rtf
9   |   doc.txt , doc1.txt , doc2.rtf , doc3.docx , doc4.doc
10  |   doc.txt , doc1.txt

SQL FIDDLE SCHEMA
我需要这样的结果。其中id=5
Counter |   docs
    ----|-----------
    1   |   doc.txt
    2   |   doc1.txt
    3   |   doc2.rtf
    4   |   doc3.docx
    5   |   doc4.doc

其中id=4
Counter |   docs
    ----|-----------
    1   |   doc.txt
    2   |   doc1.txt
    3   |   doc2.rtf

你看,我需要分解逗号分隔的列并计算有多少个值。我不喜欢这个模式,但我正在处理一个现有的项目,不能改变它。我需要计数器在用户界面中显示。所以计数器也是必要的。我该怎么做?另外,我不能在php端使用它,因为我使用的是pyroms,我需要使用pyromstage来显示它,这不允许我在视图中使用php。

最佳答案

看看这个,也许是你想要的。必须使用helper tablesequence

SELECT * FROM
(SELECT S.Id Counter,
REPLACE(SUBSTRING(SUBSTRING_INDEX(document, ' , ', S.Id),
       LENGTH(SUBSTRING_INDEX(document, ' , ', S.Id - 1)) + 1),
       ' , ', '') docs
FROM documents D, sequence S
WHERE D.id = 3) A
WHERE A.docs <> ''

10-05 22:49
查看更多