所以这是故事,
SELECT STOCK_TABLE.Product_Name
From STOCK_TABLE
Product_Name中的包含:
所以我想改变Product_Name中项目的包含,只要我知道我们可以使用解码来面对这个问题,但问题是我只想解码一些主题(牛仔裤和帽子),而不是所有。所以我用:
SELECT
DECODE(STOCK_TABLE.Product_Name, 'Jeans', 'PJ1', 'Cap','PC1') as "Product Name"
From
STOCK_TABLE
然后结果只出现PJ1(以前是牛仔裤)和PC1(以前是帽子)。
问题是我希望其余部分(T恤和衬衫)也出现,但原来的名字。
那我该怎么办呢?是否可以使用解码和一些我想念的函数添加或者我们必须使用另一个SQL函数?
答案 0 :(得分:2)
DECODE
是一个很好的功能,但快速不可读(个人观点,当然)
您可以完美地使用CASE ... WHEN(当您有多个if else
子句时,它会执行相同的操作,但通常更容易阅读)
case Product_Name
when 'Jeans' then 'PJ1'
when 'Cap' then 'PC1'
else Product_Name
end as "Product Name"
答案 1 :(得分:2)
我同意case表达式更容易阅读和维护,但是如果遇到DECODE,你应该理解它的结构与case表达式非常相似
SELECT
DECODE(STOCK_TABLE.Product_Name
, 'Jeans', 'PJ1'
, 'Cap','PC1'
, Product_Name
) as "Product Name"
From
STOCK_TABLE
OR
SELECT
DECODE(evaluate_this_expression
, value_to_match, value_to_output
, value_to_match, value_to_output
, else_value_to_output
) as alias_for_this
From
wherever
答案 2 :(得分:0)
试试这个:
SELECT CASE
WHEN Product_Name = 'Jeans' THEN 'PJ1'
WHEN Product_Name = 'Cap' THEN 'PC1'
ELSE Product_Name
END as "Product Name"
FROM STOCK_TABLE