使用条件标准创建视图

时间:2018-02-08 23:14:50

标签: oracle sql-view

在Oracle数据库版本11g中,我想创建或替换具有以下特征的视图BADGES:

(1)视图将包含两列:EMP_ID(NUMBER(9),BADGE_NO(NUMBER(13))。

(2)视图将从表Public_View的以下列中获取数据:EMP_ID(NUMBER(9)),BLDG_CD(NUMBER(4)),OFFSET_ID(NUMBER(10))。

(3)在视图中,BADGE_NO是BLDG_CD和OFFSET_ID的串联。

(4)现在我遇到问题的部分:当OFFSET_ID< 1000000(小于1百万),我想左边的填充OFFSET_ID为0(零),总共7个字符。当OFFSET_ID> = 1000000(等于或大于1百万)时,我想将填充OFFSET_ID设为0(零),总共8个字符。

1 个答案:

答案 0 :(得分:0)

您可以在偏移ID的长度减去7, SIGN(长度(OFFSET_ID)-7)

的长度上对符号值设置条件
SELECT DECODE(SIGN(length(OFFSET_ID)-7), -1, LPAD(OFFSET_ID, 7, '0'), LPAD(OFFSET_ID, 8, '0'))   
FROM your_table;

如果需要,您也可以使用CASE语句(例如CASE SIGN(长度(OFFSET_ID)-7)