MySQL - 如何从所有记录中获取特定值的计数

时间:2016-06-09 09:16:36

标签: php mysql sql

我有课程表,我正在使用' A'存储用户的完成状态。现在,我想知道A字段中有多少CompletionStatus可用于所有记录。

我想要这个结果:A = 5。

课程表:

CourseRecordIdx     User    CompletionStatus 
---------------     ----    --------------------
1                   152     A___A_______________
2                   147     AA_______A__________

我尝试使用char_length,但是使用下划线计算,我希望只获得A的总数:

SELECT char_length(CompletionStatus) FROM `course` where CourseRecordIdx = 36

知道如何使用select query获取结果吗?

感谢。

4 个答案:

答案 0 :(得分:1)

您可以将LENGTHREPLACE用于此目的:

SELECT LENGTH(CompletionStatus) - LENGTH(REPLACE(CompletionStatus, 'A', '')) as count_Char
 FROM `course`

这基本上计算该字符串中的字符数,然后检查该数字与具有特定字符的字符数之间的差异。

答案 1 :(得分:1)

您可以尝试这种最简单的方法:

 SELECT length(REPLACE("field_name","_","")) FROM `tbl_name`;

答案 2 :(得分:0)

我认为以下内容可行,首先将所有_替换为''。 之后使用char_length()函数。

SELECT CHAR_LENGTH(REPLACE(CompletionStatus,'_','') as totalA FROM course where CourseRecordIdx = 36;

答案 3 :(得分:0)

您可以为此编写此查询:

SELECT CourseRecordIdx,User,CompletionStatus,
ROUND (   
    (
    LENGTH(CompletionStatus)- LENGTH( REPLACE ( CompletionStatus, "A", "")) 
    ) / LENGTH("A")) AS count    
from `course` where CourseRecordIdx = 36