oracle 中case when then 字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 中case when then 字符串相关的知识,希望对你有一定的参考价值。

A1 表
node BUSINESS_LIST
(varchar2)

1 10,20

B1表
node BUSINESS_LIST
(char)

1 10
1 20
1 30

我现在想写个语句作个判断,但只能出来一个结果,in 中直接改成'10','20'则可以出来二条,请高手帮忙看看
select a.node,b.BUSINESS_LIST from A1.a left join B1.b on a.node = b.node and B1.BUSINESS_LIST in
(CASE WHEN a.BUSINESS_LIST = '10,20' THEN ( '''10'''||','||'''20''') else b.BUSINESS_LIST END)

参考技术A select a.node,b.BUSINESS_LIST from A1 a left join B1 b on a.node = b.node and
REGEXP_LIKE(A.BUSINESS_LIST,B.BUSINESS_LIST);
这样子就可以了。
参考技术B Case when 的用法,简单Case函数
简单CASE表达式,使用表达式确定返回值:
  语法:
  CASE search_expression
  WHEN expression1 THEN result1
  WHEN expression2 THEN result2
  ...
  WHEN expressionN THEN resultN
  ELSE default_result
搜索CASE表达式,使用条件确定返回值:
  语法:
  CASE
  WHEN condition1 THEN result1
  WHEN condistion2 THEN result2
  ...
  WHEN condistionN THEN resultN
  ELSE default_result
  END
  这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
  还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

Oracle CASE WHEN函数用法

CASE函数有两种格式:1.简单CASE函数。2.CASE搜索函数。

--简单Case函数
CASE sex
WHEN 1 THEN 
WHEN 2 THEN 
ELSE 其他 END

 

--Case搜索函数 
CASE WHEN sex = 1 THEN  
WHEN sex = 2 THEN  
ELSE 其他 END  

两种方式可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

--下面这段SQL,你永远无法得到“第二类”这个结果 
CASE WHEN col_1 IN ( a, b) THEN 第一类 
WHEN col_1 IN (a)  THEN 第二类 
ELSE其他 END

 

以上是关于oracle 中case when then 字符串的主要内容,如果未能解决你的问题,请参考以下文章

oracle中case when的用法

Oracle CASE WHEN 用法介绍

Oracle CASE WHEN 用法介绍

oracle case when

ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

Oracle CASE WHEN函数用法