【发布时间】:2021-04-10 18:57:47
【问题描述】:
您好,我有以下数据 '1,2,3',我需要将其转换为我将在其中使用的 '1','2','3'
Select * from dual where to_chat(month) in ('1','2','3')
由于quater,我不能像那样直接使用查询
Quater no. Month
1 1,2,3
2 4,5,6
...
所以我必须像这样使用 case 但 case 语句以这样的格式返回 '1','2','3'
Select * from dual
where to_chat(month) in (
select
case quarter
when 1 then '1','2','3'
when 2 then '4','5','6'
end
from dual )
输入
'1,2,3'
预期输出
'1','2','3'
【问题讨论】:
-
无论如何,你不能那样做。 IN 子句中的每个值都是一个单独的项目。看看这个 - stackoverflow.com/questions/4672545/…
-
什么是to_chat?你的意思是 to_char 吗?
-
在任何情况下,MONTH 和 QUARTER 都应该是数字,那么为什么要将它们作为字符串处理呢?如果它们都是数字(应该是),并且您想选择“月份与季度匹配的地方”(您似乎想要),那很简单:
... where QUARTER = ceil(MONTH/3) -
嗨 @marhguy 是的,它是数字,但在桌子上没有 quater 列,所以 QUARTER = 不起作用
-
@KimIvanBay-an 如果表中没有季度列,那么为什么在带有 case 语句的示例代码中包含它?如果您可以添加一些示例数据和所需的结果,那将为这里的每个人消除困惑
标签: sql oracle oracle11g oracle-sqldeveloper