MySql:根据条件在特定列中显示值

MySql:根据条件在特定列中显示值,mysql,Mysql,我有一个场景,需要根据条件将值显示到特定列中。具体来说,比如说,我有一个值,是从某个列中得到的,该列的值包含字符串“美好的一天”。 我有四个专栏;columnA,columnB,columnC,columnD,其中我只需要根据条件在四列中的一列中显示该值 如果这个值“美丽的一天”包含等于或大于3'a,那么我需要在a列中显示,其余列应该为空。 如果它包含2个'a',我需要在B列中显示它,如果是1个'a'列C,如果不是'a',则在D列中显示 应该是这样的: +-------------------+

我有一个场景,需要根据条件将值显示到特定列中。具体来说,比如说,我有一个值,是从某个列中得到的,该列的值包含字符串“美好的一天”。 我有四个专栏;columnA,columnB,columnC,columnD,其中我只需要根据条件在四列中的一列中显示该值

如果这个值“美丽的一天”包含等于或大于3'a,那么我需要在a列中显示,其余列应该为空。 如果它包含2个'a',我需要在B列中显示它,如果是1个'a'列C,如果不是'a',则在D列中显示

应该是这样的:

+-------------------+-------------------+-----------+-----------+-----------+
| stringValue       | columnA           | columnB   | columnC   | columnD   |
+-------------------+-------------------+-----------+-----------+-----------+
| a beautiful day   |a beautiful day    |           |           |           |
| Chelsea F C       |                   |           |Chelsea F C|           |
+-------------------+-------------------+-----------+-----------+-----------+
这可以在MySql中实现吗?如果可能的话,请告诉我怎么做


提前谢谢

您可以检查将“a”替换为“a”前后的长度


这种问题可能是糟糕的模式设计的症状
select case when (length(stringValue ) - length(replace(stringValue, 'a',''))) >= 3 
           then stringValue else null end columnA
    ,  case when (length(stringValue ) - length(replace(stringValue, 'a','')))= 2 
           then stringValue else null end columnB
    , case when (length(stringValue ) - length(replace(stringValue, 'a',''))) = 1 
           then stringValue else null end columnC
    , case when (length(stringValue ) - length(replace(stringValue, 'a',''))) = 0
           then stringValue else null end columnD
FROM my_table