MySQL中有没有类似PHP的函数substr_count()
的函数? 其实我需要知道一套中有多少物品(例如1,2,3
是3件物品)。与PHP类似的MySQL本机substr_count()
在搜索中,我没有发现任何原生的东西。所以我用方法LENGTH()
和REPLACE()
做了一个解决方法。
SELECT LENGTH("1,2,3,4") - LENGTH(REPLACE("1,2,3,4", ",", "")) + 1;
但它失败设置为空。
但我可以用简单的IF()
来解决这个问题。
所以,我在寻找一些更多的原生一样,例如:
SELECT SUBSTR_COUNT(",", "1,2,3,4") + 1;
或者,更好:
SELECT LENGTH_OF_SET("1,2,3,4");
一些解决方案的家伙?
编辑
因为有些疑惑,我会尽量设置一些例子:
1,2,3
有3项:1,2和3;100,200
有2个项目:100和200;1,2,4,9,16,25
有6项:1,2,4,9,16和25;
基本上,我想要的数字是逗号+ 1的数字。我有这个价值,但我想知道是否有一种原生的方式来做到这一点,或者比我的成本更低。
使用CHAR_LENGTH而不是LENGTH。 – sectus
如果您遇到此类问题,那么您选择了错误的数据类型和/或错误的模式设计。我建议你重新设计,而不是让这些问题复杂化。 –
@MostyMostacho我必须存储一些数字来引用其他表的数据。我知道最好的方法是创建一个“表格连接器”(用户,用户扇区)。但在我的情况下,它会变得更难以工作。如何从这个表中删除任何数据,因此我不需要为这个项目的步骤设置FK。但我感谢你的帮助。 :) –