首页 > 解决方案 > SQLPlus 中的情况

问题描述

我仍在学习 SQLPlus,我正在尝试使用另一个名为的表(如果有帮助,Oracle DB 12c)DM_Businees中的数据填充一个名为的表。Business

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))。

你能帮我么?非常感谢。

标签: sqloraclesqlplus

解决方案


列中的数据是什么样的?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' ...

推荐阅读