我有这样一张table:
| 职务|描述|
| - ------|- ------|
| 测试1|价值等等价值|
| 测试2|价值测试|
| 测试3|测试测试测试|
| 测试4|价值评价评价评价价值|
我试图弄清楚如何返回字符串在每个DESCRIPTION中出现的次数。
所以,如果我想统计'value'出现的次数,sql语句将返回以下内容:
| 职务|描述|计数|
| - ------|- ------|- ------|
| 测试1|价值等等价值|第二章|
| 测试2|价值测试|1个|
| 测试3|测试测试测试|无|
| 测试4|价值评价评价评价价值|五个|
有什么办法可以做到这一点吗?我根本不想用php,只想用mysql。
8条答案
按热度按时间krcsximq1#
这应该可以达到目的:
biswetbf2#
@yannis解决方案的一个更简单、更有效的变体:
不同之处在于,我用一个短1个字符的字符串(本例中为“1234”)替换了“value”字符串,这样就不需要进行除法和舍入来得到整数值。
通用版本(适用于每根针串):
41ik7eoe3#
试试这个:
SQL Fiddle演示
0qx6xfy64#
在SQL SERVER中,这就是答案
我没有安装MySQL,但我发现LEN的等价物是LENGTH,而替换是相同的。
因此,MySql中的等效查询应为
请让我知道它是否也适用于你的MySql。
k10s72fa5#
这里有一个函数可以做到这一点。
cotxawn76#
这是使用空间技术的mysql函数(用mysql 5.0 + 5.5测试):
8nuwlpux7#
谢谢Yannis,你的解决方案为我工作,在这里我分享相同的解决方案,多个关键字与秩序和限制.
oymdgrw78#
大多数情况下,这些函数分别为LENGTH和REPLACE(SQL Server用户将使用内置函数LEN而不是LENGTH):
例如,字符串“10,CLARK,MANAGER”中逗号的计数num