gpt4 book ai didi

php - Mysql 按计数对子字符串列值进行排序

转载 作者:行者123 更新时间:2023-11-30 00:34:45 24 4
gpt4 key购买 nike

我想按子字符串的计数对查询进行排序。

表:

id shop_update

1  a,b,c
2 a,b
3 c
4 a,'',c

我只是按数量订购

id  shop_update count
1 a,b,c 3
2 a,b 2
3 c 1
4 a,'',c 2

我的查询是

$this->db->select("*,LENGTH(shop_update) - LENGTH(REPLACE(shop_update,',','')) AS counts");
$this->db->order_by("counts","DESC");
$this->db->from('at_shop');

但它仅在计数中返回 0

 id  shop_update count
1 a,b,c 0
2 a,b 0
3 c 0
4 a,'',c 0

我的问题是 LENGTH(REPLACE(REPLACE(shop_update,',',''),'''','')) 它运行时的空间类似于 LENGTH(REPLACE (REPLACE(shop_update,',(正在运行的查询中添加了空格,但实际代码中不存在空格)',''),'''',''))

请看看区别有什么帮助吗?

最佳答案

问题就在这里

LENGTH(REPLACE(shop_update,' , ',''))

在您的表中,数据为 a、b、b 等,没有空格,长度与原始字符串相同,因为没有任何内容可替换,并且行

LENGTH(shop_update) - LENGTH(REPLACE(shop_update,',' , ''))

总是返回0。即

length of string - LENGTH(REPLACE(shop_update,',' , '')) 

所以使用为

LENGTH(REPLACE(shop_update,',',''))

关于php - Mysql 按计数对子字符串列值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22268845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com