SQL 中的查询 - 7 Boom

问题描述

我需要编写一个代表以下内容的查询:

我有 1 个表“数字”,其中一列只有“数字”(整数)。 该表包含从 1 到 N 的数据。

我需要写一个查询,每次出现数字 7 时都会替换单词“Boom” 或者每次我们有一个可以被7整除的数字。 所以最后我得到以下结果:1 2 3 4 5 6 Boom 8 9 10 11 12 13 Boom 15 16 Boom 18 19 20 Boom ....

希望很清楚:)

谢谢

解决方法

您可以直接将您的要求转换为 SQL(考虑到“Boom”是一个字符串并且在某些情况下不能替换整数)。

“7 或可被 7 整除”表示其余数模 7 为零。

所以,

SELECT IF(num % 7 = 0,'Boom',num) AS num FROM mytable

会按照你的要求去做。见fiddle

,

您可以使用 CASE。例如:

select
  case when n % 7 = 0 or concat('x',n) like '%7%' then 'Boom'
       else concat('',n)
  end
from numbers

结果:

 Result 
 ------ 
 1      
 2      
 3      
 4      
 5      
 6      
 Boom   
 8      
 9      
 10     
 11     
 12     
 13     
 Boom   
 15     
 16     
 Boom   
 18     
 19     
 20     
 Boom   
 22     
 23     
 24     
 25     
 26     
 Boom   
 Boom   
 29     
 30     

请参阅 DB Fiddle 上的运行示例。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...