【问题标题】:mySql: gets the rows where the number of words in the cell (string comma separated) has the same value as a matched cell [duplicate]mySql:获取单元格中的单词数(字符串逗号分隔)与匹配的单元格具有相同值的行[重复]
【发布时间】:2020-03-09 04:43:02
【问题描述】:

我有一张这样的桌子:

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

【问题讨论】:

  • aaa,bbb,ddd,"empty" 项会发生什么情况?理想情况下,您应该规范化..

标签: mysql database string csv where-clause


【解决方案1】:

考虑:

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

编号 |鳕鱼|类型 | qta -: | :-- | :------------ | --: 1 |啊! aaa,bbb,ccc | 3 2 |啊! dd | 1 4 |啊! ggg,hhh | 2

【讨论】:

  • 非常感谢...如果我需要像这样更新字符串 aaa_1,bbb_1,ccc_1
  • "如果我需要像这样更新字符串 aaa_1,bbb_1,ccc_1 " @FrancescoG.这是与您上述问题无关的另一个问题,或多或少需要您编写一个完整的新问题...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2019-08-10
相关资源
最近更新 更多