SQL 解码函数(我只想解码其中的几个)
Posted
技术标签:
【中文标题】SQL 解码函数(我只想解码其中的几个)【英文标题】:SQL Decode Function (i only want to decode few of them) 【发布时间】:2014-08-14 08:51:22 【问题描述】:故事就是这样,
SELECT STOCK_TABLE.Product_Name
From STOCK_TABLE
在 Product_Name 内包含:
衬衫 牛仔裤 上限 T 恤所以我想改变Product_Name里面的item的包含,只要我知道我们可以使用decode来解决这个问题,但问题是我只想解码一些主题(牛仔裤和帽子),而不是全部。所以我用:
SELECT
DECODE(STOCK_TABLE.Product_Name, 'Jeans', 'PJ1', 'Cap','PC1') as "Product Name"
From
STOCK_TABLE
那么结果只有 PJ1(以前是牛仔裤)和 PC1(以前是帽子)。
问题是我希望它的其余部分(T 恤和衬衫)也出来,但使用其原始名称。 那我该怎么做呢?是否可以使用 decode 和一些我错过的函数添加,或者我们必须使用另一个 SQL 函数?
【问题讨论】:
向我们展示输入和输出 【参考方案1】:DECODE
是个不错的函数,但速度快不可读(当然是个人观点)
您可以完美地使用 CASE... WHEN(其作用相同,但当您有多个 if else
子句时通常更易于阅读)
case Product_Name
when 'Jeans' then 'PJ1'
when 'Cap' then 'PC1'
else Product_Name
end as "Product Name"
【讨论】:
马上试一试就行了,你知道的,它真的是一个很大很大很大的帮助。我很感激。非常感谢!DECODE()
是not a nice function,完全同意CASE的说法。
好吧,实际上我经常使用解码,因为在我的公司软件中,当我在查询编辑器中键入时,“解码”字样会变成另一种颜色,而当我尝试键入 WHEN 时,它不会换成黑色的任何颜色,所以我担心它不会起作用(我是一个新鲜的新手)。但是当很多人说我们可以像@RaphaëlAlthaus 说的那样用例时,我只是尝试了一下,它就可以了,所以现在问题解决了,源数据名称与其他数据相同。谢谢你们。无论如何如果你不介意回答,在什么情况下我们真的需要使用解码?【参考方案2】:
我同意 case 表达式更容易阅读和维护,但是如果您遇到 DECODE,您应该明白它的结构无论如何都与 case 表达式非常相似
SELECT
DECODE(STOCK_TABLE.Product_Name
, 'Jeans', 'PJ1'
, 'Cap','PC1'
, Product_Name
) as "Product Name"
From
STOCK_TABLE
或
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
【讨论】:
【参考方案3】:试试这个:
SELECT CASE
WHEN Product_Name = 'Jeans' THEN 'PJ1'
WHEN Product_Name = 'Cap' THEN 'PC1'
ELSE Product_Name
END as "Product Name"
FROM STOCK_TABLE
【讨论】:
以上是关于SQL 解码函数(我只想解码其中的几个)的主要内容,如果未能解决你的问题,请参考以下文章
当我只想获取字典中的特定值时,如何解码字典值的 JSON 数组?
EncoderDecoderModel 转换解码器的分类器层