问题描述
我需要编写一个代表以下内容的查询:
我有 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 上的运行示例。