【问题标题】:Decode() in Oracle甲骨文中的解码()
【发布时间】:2016-03-10 17:21:26
【问题描述】:

oracle的decode()函数加密字符串的语法是什么 示例:- 如果我想用 '***' 加密 'suvendu' 和 'mohan' 用 '$$$' 为示例表的列 fname 加密

desc samples
Name   Null     Type         
------ -------- ------------ 
EMP_ID          VARCHAR2(20) 
LNAME           CHAR(10)     
FNAME           CHAR(20)     
DEPT            CHAR(20)     
SAL    NOT NULL NUMBER(12,2) 
H_DATE          DATE         
EMAIL           VARCHAR2(20) 
DESG            VARCHAR2(25) 

【问题讨论】:

  • DECODE 的语法当然在the documentation 中有解释。你到底想做什么,为什么要用 DECODE 来做?
  • 解码();像(如果第二个参数匹配,用第三个参数替换它)和(如果第四个参数匹配,用第五个参数替换它)等等......例如SELECT DECODE(SAL, 1, "One", 2, "Two", 99, "ninetyNine") 从样本中

标签: oracle decode


【解决方案1】:

虽然您可以使用DECODE 来处理这个问题,例如:

SELECT DECODE(FNAME,
                'suvendu', '***',
                'mohan',   '$$$',
                           FNAME) AS DERIVED_COL
  FROM SAMPLES

IMO 使用 CASE 表达式是更好的选择

SELECT CASE FNAME
         WHEN 'suvendu' THEN '***'
         WHEN 'mohan'   THEN '$$$'
         ELSE FNAME
       END AS DERIVED_COL
  FROM SAMPLES

因为它使正在发生的事情更清楚并且更易于阅读。

祝你好运。

【讨论】:

  • 很好的建议/提醒,CASE 是一个很好的替代表达方式!
  • 感谢老兄的工作,请尝试回答我的其他问题
  • dude case 什么时候工作但是当我尝试 SELECT DECODE(FNAME, 'suvendu', '***', 'mohan', '$$$', FNAME) AS DERIVED_COL FROM SAMPLES 我得到了“缺少表达式”错误
【解决方案2】:

更新(试试这个):

SELECT 
    DECODE(fname,'suvendu', '***', 'mohan", '$$$') AS F_NAME
    --add other columns/column-list here if needed
FROM 
    samples

以 -- 开头的行是注释行

【讨论】:

  • 当我执行查询时出现以下错误
  • "FROM keyword not found where expected" 这是我得到的错误
  • @suvendu ,现在就试试吧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多