在 SQLPlus 中的情况
Case when in SQLPlus
我仍在学习 SQLPlus,我正在尝试使用来自另一个名为 Business
的 table 的数据填充一个名为 DM_Businees
的 table(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
我的目标是检查Business
中的Categories
列:如果它包含单词"Event"然后在[=16=中的列中写入"Event Planning" ].问题是它不起作用:它没有显示任何错误,但每一行都是空的。
我试过同样的事情,但用数字代替(比如 1 代替 "Event Planning"、2 代替 "Financial Services"、3 代替 "Home Services"...)和它工作得很好(列数据类型是 varchar2(200)
)。
你能帮帮我吗?非常感谢。
由于测试数据,我会做这样的事情Jado:Make确保一切都是低调
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
列中的数据是什么样的? 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' ...
我仍在学习 SQLPlus,我正在尝试使用来自另一个名为 Business
的 table 的数据填充一个名为 DM_Businees
的 table(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
我的目标是检查Business
中的Categories
列:如果它包含单词"Event"然后在[=16=中的列中写入"Event Planning" ].问题是它不起作用:它没有显示任何错误,但每一行都是空的。
我试过同样的事情,但用数字代替(比如 1 代替 "Event Planning"、2 代替 "Financial Services"、3 代替 "Home Services"...)和它工作得很好(列数据类型是 varchar2(200)
)。
你能帮帮我吗?非常感谢。
由于测试数据,我会做这样的事情Jado:Make确保一切都是低调
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
列中的数据是什么样的? 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' ...