decode(trim(emp.gsr_country_code),
'484',
lpad(trim(emp.gsr_center6), 5, '0'),
decode(length(trim(emp.gsr_center6)),
7,
substr(trim(emp.gsr_center6), 3, 5),
trim(emp.gsr_center6)))
如果您重新格式化它,以便实际看到与内容进行比较的内容,那么它看起来像这样(不幸的是,您现在必须向右滚动):
decode(trim(emp.gsr_country_code), '484', lpad(trim(emp.gsr_center6), 5, '0'),
decode(length(trim(emp.gsr_center6)), 7, substr(trim(emp.gsr_center6), 3, 5),
trim(emp.gsr_center6)
)
)
那么,它有什么作用呢?
trim
从emp.gsr_country_code
中删除任何空格并将其与'484'
- 如果修剪
gsr_country_code
等于'484'
,则函数(decode
,对吗?)返回修剪后的emp.gsr_center6
,该左填充,长度为 5 个字符的零 - 如果它不等于
'484'
,则转到另一个decode
(在 #2 行)
- 如果修剪
- 它检查修剪
emp.gsr_center6
的长度是否等于7
- 如果是这样,它从修剪后的
emp.gsr_center6
返回5
个字符,从字符 #3 开始 - 如果没有,它将返回修剪后的
emp.gsr_center6
- 如果是这样,它从修剪后的
就是这样。