DECODE 函 數 DECODE 函 數 的 功 能 有 點 像 程 式 語 言 的 if-then-else 句 子 , 它 會 能 夠 根 據 資 料 不 同 的 值 , 傳 回 不 同 的 資 料 , 語 法 如 下 : 
DECODE(COLUMN_NAME
    ,VALUE1, SUBSTITUTE1
    ,VALUE2, SUBSTITUTE2
    , ...
    ,DEFAULT
)如 果 COLUMN_NAME 的 值 是 VALUE1 , 就 傳 回 SUBSTITUTE1 , VALUE2 , 就 傳 回 SUBSTITUTE2 , 如 此 類 推 , 如 果 以 上 的 值 都 不 是 , 就 傳 回 DEFAULT 。 其 實 DECODE 也 可 以 做 到 NVL 的 功 能 , 例 如 NVL(COMM, 0) 可 以 寫 成 : 
DECODE(COMM, NULL, 0, COMM)假 設 你 想 列 出 每 個 僱 員 的 部 門 名 稱 , 除 了 可 以 把 EMP 連 接 到 DEPT 外 , 還 可 以 用 DECODE 來 做 。 SQL> SELECT ENAME
  2      ,DECODE(DEPTNO
  3          ,10 ,'Accounting'
  4          ,20 ,'Research'
  5          ,30 ,'Sales'
  6          ,40 ,'Opeartions'
  7          ,'UNKNOWN'
  8      ) DEPARTMENT
  9   FROM EMP
 10   ;ENAME      DEPARTMENT
---------- -------------
SMITH      Research
ALLEN      Sales
WARD       Sales
JONES      Research
MARTIN     Sales
BLAKE      Sales
CLARK      Accounting
SCOTT      Research
KING       Accounting
TURNER     Sales
ADAMS      Research
JAMES      Sales
FORD       Research
MILLER     Accounting14 rows selected.

解决方案 »

  1.   

    这个decode函数在access里怎么写。
      

  2.   

    --变量v_name
    v_name:=decode(a.user_name,'A','alen','C','Cary','M','Mary','Jony')--access:
    if a.user_name='A' then 
        v_name='alen'
    else if a.uer_name='C' then 
        v_name='Cary'
    else if a.user_name='M' then 
        v_name='Mary'
    else
        v_name='Jony'
    end if
      

  3.   

    不好意思,access中没有这个函数. 要想实现这个函数的功能.要在程序中对数据做处理(如上例).decode在oracle系统中算是比较强大的了.
      

  4.   

    这个有点麻烦了噢。。
    那我的程序好多地方都得改。
    我原来的是在ORACLE下的。
    因用户说用ORACLE太麻烦,最好改为 access.
    没办法。
      

  5.   

    IIf 函数示例该示例使用了 IIf 函数计算“订单数量”字段,在数量大于 1000 时返回“Large”;否则,返回“Small”。可以在计算控件的 ControlSource 属性中输入下列表达式。= IIf([OrderAmount] > 1000, "Large", "Small")
      

  6.   

    Access是桌面型、个人型数据库,其实它连库都称不上,呵呵。
    你建议客户使用SQL Server不就得了么?
    反正是D的,SQL Server比Access更易使用,更人性化!
      

  7.   

    那就改,凡是decode的地方全部改掉.