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 转换解码器的分类器层

使用 windows 编解码器解码音频文件

DefaultJwtParser:如何仅解码 JWT? (没有密钥,没有验证)

JSON 的 Swift 可解码解析部分

FFmpeg学习1:视频解码