【问题标题】:count specific value on column mysql计算列 mysql 上的特定值
【发布时间】:2020-07-12 02:54:24
【问题描述】:

我有桌子 trx

id    name     respond
1     john     DETIL!518050381482|202003|SRI RAHAYU               |  R1|450|6784|6866|0|0|0|0|047421CB6333E1FB10624B8BD3462256|2020-03-31 20:19:12|37881|2750|0|0|ASLI:asialink|LISTRIK|"Informasi Hubungi Call Center 123 Atau Hub PLN Terdekat :"                     . Powered by Bukopinet.|123            |21d94ad2fb7127e7ccbc5928c22996f1*!93116677|93116677|79
2     dana     DETIL!518030384979|202003|MUSJARI                  |  R1|900|450|15769|0|0|0|0|047421CB6333E546FEB23EA60FE279C5|2020-03-31 20:53:28|462570|2750|0|0|ASLI:asialink|LISTRIK|"Informasi Hubungi Call Center 123 Atau Hub PLN Terdekat :"                     . Powered by Bukopinet.|123            |700ab80876c7d0f0e3ea5621c29988e3*!89065543|89065543|79
3     toni     DETIL!518030384770|202003|KASBUN                   |  R1|450|15502|15603|0|0|0|0|047421CB6333E552C7AC8A082139A502|2020-03-31 20:54:17|48227|2750|0|0|ASLI:asialink|LISTRIK|"Informasi Hubungi Call Center 123 Atau Hub PLN Terdekat :"                     . Powered by Bukopinet.|123            |ec47a682782daa193cd3b9e8a241664e*!88781316|88781316|79

我想计算列有多少 450 值(在 R1 之后)响应。

我用select count(*) from trx where respond like '%|450|%'

但它显示为 3,因为 id 2 的值为 |450|但我只期望 R1 之后的价值

应该是2

【问题讨论】:

  • 一旦您在单个单元格中进入something seperated lists,通常最好在程序中执行此操作而不是在原始 sql 中执行此操作。说明为什么这样做是一个坏主意。想想如果你想要第 7 节中的 R10 会有多困难? :)
  • 嗯,这是学习范式 1 的一种方法。

标签: mysql sql csv parsing sql-like


【解决方案1】:

这是你想要的吗?

where respond like '%R1|450|%'

这适用于您的示例数据。

您可以使用正则表达式更灵活一些:

where respond regex 'R1[^|]*\\|450\\|'

此短语为:'R1' 后跟 '|' 以外的 0 到 n 个字符,然后是 '|450|'

【讨论】:

  • 这是行不通的,因为在实际数据中,R1 可能是 R1M、TAM 等。
猜你喜欢
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2018-09-11
  • 1970-01-01
  • 2017-06-18
  • 2019-08-29
相关资源
最近更新 更多