SQL话语的DECODE和NVL()函数、lpad函数

SQL语句的DECODE和NVL()函数、lpad函数
SQL语句的DECODE和NVL()函数、lpad函数
2008-08-04 15:16
SELECT
DECODE(WP01.ONDO_KBN,0,'対象外'1,'常温',2,'保冷')  AS ONDO_KBN
FROM
WP01_S_HAITOTAL WP01
//分析: 当WP01.ONDO_KBN=0时,将"対象外"赋值 www.lis123.com

当WP01.ONDO_KBN=1时,将"常温"赋值 www.lis123.com

当WP01.ONDO_KBN=2时,将"保冷"赋值

立珊网络计算机专业网

NVL()函数: 立珊网络计算机专业网

NVL(ARG,VALUE)达标如果前面的ARG值为NULL那么返回的值为后面的VALUE二者结合使用: lis123.com

DECODE(NVL(M01.NINUSI_NM,''),'','-',M01.NINUSI_NM) www.lis123.com

//分析: 立珊网络计算机专业网

首先判断--若M01.NINUSI_NM是否为空.若为空赋给空值[NVL函数] 立珊网络计算机

其次,判断取出的字段是否为空,如果是则赋给'-'

www.lis123.com

最后的默认处理是M01.NINUSI.NM。

lpad函数

在Oracle/PLSQL中,lpad函数将左边的字符串填充一些特定的字符,其语法格式如下:

lpad( string1, padded_length, [ pad_string ] )

其中string1是需要粘贴字符的字符串

padded_length是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成padded_length;

pad_string是个可选参数,这个字符串是要粘贴到string1的左边,如果这个参数未写,lpad函数将会在string1的左边粘贴空格。

eg:

SQL> select lpad('lijie',2) from dual;

LP
-- -------只显示2个字符
li

SQL> select lpad('lijie',6) from dual;

LPAD('
------ -------显示6个字符,有一个为空格
lijie

SQL> select lpad('lijie',8,'tina') from dual;

LPAD('LI
--------
tinlijie

1.NVL函数
从两个表达式返回一个非 null 值。

语法
NVL(eExpression1, eExpression2)

参数
eExpression1, eExpression2

如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。

返回值类型
字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值

2.NVL2函数

语法
NVL(eExpression0, eExpression1,eExpression2)

参数
eExpression0,eExpression1, eExpression2

如果 eExpression0 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1和eExpression2类型不同的话,eExpression2会转换为eExpression1的类型

返回值类型
字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值

3.nullif
NULLIF (expr1, expr2)
expr1與expr2相等返回NULL,不等則返回expr1 注意類型要一致

4.decode
decode (expression, search_1, result_1, search_2, result_2, ., search_n, result_n, default)
decode函數比較表達式和搜索字,如果匹配,返回結果;如果不匹配,返回default值;如果未定義default值,則返回空值。

4.【decode()函数】


      decode(条件,值1,翻译值1, 值2,翻译值2,...值n,翻译值n,缺省值)

     语法:相当于if -----else 用法

     if 条件=值1 then

   return(翻译值1)

  else 条件=值2 then

   return(翻译值2)

  ......

  else 条件=值n then

   return(翻译值n)


===================================

   例子:decode(sale_rate,'21','1M','30','2M','79','3M','48','4M')

        //表示如果if sale_rate = 21,则返回1M ,else sale_rate = 30 ,则返回2M


   范例2:下面的语句中,最终的速率的值显示的是: 1M 、2M、3M 、4M


   select a.lan_id 本地网,decode(a.sale_rate,'21','1M','30','2M','79','3M','48','4M') 速率,

    a.offer_id 套餐id,a.sale_name 套餐名称 from csss.inf_ct10000_sale a