This question already has answers here:
Is storing a delimited list in a database column really that bad?
(10个答案)
9天前关闭。
我有一张这样的桌子:
CREATE TABLE tab1 (
  id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
  cod TEXT,
  type TEXT,
  qta INTEGER);

INSERT INTO tab1 (cod, type, qta)
  VALUES ('aaa','aaa,bbb,ccc', 3),
          ('aaa','ddd', 1),
          ('aaa','eee,fff', 4),
          ('aaa','ggg,hhh', 2),
          ('aaa','out', 7),
          ('aaa','out', 7);

我想知道“type”列的每个单元格中有多少个单词。
对我来说,最好的办法是只有单词数与“qta”相同的行。
所以我只想要id为1,2,4的行
原始代码链接:here

最佳答案

考虑:

select *
from tab1
where char_length(type) - char_length(replace(type, ',', '')) + 1 = qta

表达式char_length(type) - char_length(replace(type, ',', ''))给出字符串中逗号的数目。添加1可以得到字符串中的单词数。
Demo on DB Fiddle
id | cod |类型| qta
-: | :-- | :---------- | --:
1 | aaa | aaa、bbb、ccc | 3
2 | aaa | ddd | 1
4 | aaa | ggg,hhh | 2号

关于mysql - mySql:获取单元格中的单词数(以逗号分隔的字符串)与匹配的单元格具有相同值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58836191/

10-13 03:19