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