oracle sql中decode,sql server中类似oracle中decode功能的函数 | 学步园

SQL Server 2008中的写法:

select t.PROJECTNAME,

t.BUILDCONTENTSCALE,

CASE t.PROJECTLEVEL

WHEN '0' THEN '国家重点'

WHEN '1' THEN '省重点'

WHEN '2' THEN '市重点'

WHEN '3' THEN '区/县重点'

END AS PROJECTLEVEL,

t.TOTALINVESTMENT,

t.PROGRESSCONTENT,

t.BUILDCOMPANY,

t.CONTACTWAY,

t.DUTYDEPT,

t.REMARK

from t_iipms_applayprojects t

where t.projecttype = '1'

and t.isvoided = '0';

Oracle 10g中的写法:

select t.PROJECTNAME,

t.BUILDCONTENTSCALE,

decode(t.PROJECTLEVEL,

'0',

'国家重点',

'1',

'省重点',

'2',

'市重点',

'3',

'区/县重点') as PROJECTLEVEL,

t.TOTALINVESTMENT,

t.PROGRESSCONTENT,

t.BUILDCOMPANY,

t.CONTACTWAY,

t.DUTYDEPT,

t.REMARK

from t_iipms_applayprojects t

where t.projecttype = '1'

and t.isvoided = '0';

细节对比看效果很明显:SQL Server 2008中

CASE t.PROJECTLEVEL

WHEN '0' THEN '国家重点'

WHEN '1' THEN '省重点'

WHEN '2' THEN '市重点'

WHEN '3' THEN '区/县重点'

END AS PROJECTLEVEL

Oracle 10g中decode(t.PROJECTLEVEL,

'0',

'国家重点',

'1',

'省重点',

'2',

'市重点',

'3',

'区/县重点') as PROJECTLEVEL

### Oracle SQLDECODE 函数功能和使用方法 Oracle SQL 的 `DECODE` 函数是一种条件表达式,其功能类似于其他编程语言中的 `if-else` 或 `switch-case` 语句。它允许在查询中根据某个表达式的值返回不同的结果,从而简化复杂的条件逻辑,使 SQL 语句更加简洁和易于理解[^1]。 #### 基本语法 ```sql DECODE(expression, search1, result1, [search2, result2,...], default) ``` 该函数将 `expression` 依次与每个 `search` 值进行比较,若匹配成功,则返回对应的 `result`;如果没有任何匹配项,则返回 `default` 值(可选)。 #### 示例说明 以下是一个典型的 `DECODE` 使用示例: ```sql SELECT id, login_name AS "账号", DECODE(login_name, 'test', '我是第一个', 'mtest', '我是就是我', '哈哈') AS "输出内容" FROM SYS_USER WHERE login_name LIKE '%test%'; ``` 此查询会根据 `login_name` 字段的值返回不同的描述信息。例如,当 `login_name` 是 `'test'` 时,返回 `'我是第一个'`;是 `'mtest'` 时,返回 `'我是就是我'`;否则返回 `'哈哈'` [^4]。 #### 功能特性 - **等值判断**:`DECODE` 主要用于等值比较,不支持范围判断或复杂逻辑。 - **自定义排序**:可用于实现字段的自定义排序,如按部门名称顺序对数据进行排序: ```sql SELECT deptno, dname, loc FROM dept ORDER BY DECODE(dname, 'OPERATIONS', 1, 'ACCOUNTING', 2, 'SALES', 3); ``` 此语句将 `'OPERATIONS'`、`'ACCOUNTING'` 和 `'SALES'` 按照指定顺序排列[^3]。 - **结合其他函数使用**:`DECODE` 可与其他函数(如 `SIGN()`)结合使用,以实现更复杂的逻辑控制[^4]。 #### 与其他结构的区别 相较于标准 SQL 中的 `CASE` 表达式,`DECODE` 是 Oracle 特有的函数,仅支持等值比较,而 `CASE` 支持任意布尔表达式,包括范围判断、空值处理等,适用性更广。此外,`CASE` 具有更强的可读性和跨数据库兼容性,适合编写通用 SQL 代码[^2]。 尽管如此,在某些特定场景下,`DECODE` 由于其简洁的语法仍被广泛使用,尤其是在需要进行简单枚举映射或替换操作时。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值