在sqlplus中为case

bxfogqkk  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(282)

我仍在学习sqlplus,并尝试填充一个名为 DM_Businees 使用另一个名为 Business (oracle db 12c,如果有帮助的话)。
INSERT INTO 我提出的问题包括:

CASE
   WHEN BUSINESS.CATEGORIES LIKE '%Event%' THEN 'Event Planning'
   WHEN BUSINESS.CATEGORIES LIKE '%Financial%' THEN 'Financial Services'
   WHEN BUSINESS.CATEGORIES LIKE '%Home%' THEN 'Home Services'
   WHEN BUSINESS.CATEGORIES LIKE '%Professional%' THEN 'Professional Services'
   ELSE 'OTHER'
END

我的目标是检查这个专栏 CategoriesBusiness :如果包含“事件”一词,请在中的列中填写“事件计划” DM_Business . 问题是它不工作:它不显示任何错误,但每一行都是空的。
我也试过同样的方法,但是用数字代替(比如1代替“活动计划”,2代替“金融服务”,3代替“家庭服务”…),效果很好(列数据类型是 varchar2(200) ).
你能帮帮我吗?非常感谢你。

1bqhqjot

1bqhqjot1#

由于测试数据,我会做这样的事情jado:make sure 一切都是低调的

CASE
   WHEN lower(BUSINESS.CATEGORIES) LIKE '%event%' THEN 'Event Planning'
   WHEN lower(BUSINESS.CATEGORIES) LIKE 'financial%' THEN 'Financial Services'
   WHEN lower(BUSINESS.CATEGORIES) LIKE '%home%' THEN 'Home Services'
   WHEN lower(BUSINESS.CATEGORIES) LIKE '%professional%' THEN 'Professional Services'
   ELSE 'OTHER'
END
46qrfjad

46qrfjad2#

列中的数据是什么样子的?oracle区分大小写。您可以尝试使用upper()或lower()进行测试。您可能还希望显式检查null
类似于:

CASE
    WHEN BUSINESS.CATEGORIES IS NULL THEN 'UNDEFINED'
    WHEN UPPER(BUSINESS.CATEGORIES) LIKE '%EVENT%' THEN 'Event Planning'
    WHEN UPPER(BUSINESS.CATEGORIES) LIKE 'FINANCIAL' THEN 'Financial Services' ...

相关问题