Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对空值列进行解码_Sql_Oracle_Decode - Fatal编程技术网

Sql 对空值列进行解码

Sql 对空值列进行解码,sql,oracle,decode,Sql,Oracle,Decode,我有一张桌子: Shipment Order_no BOL_No 100 2332 <null> 101 <null> 4443 装运订单号BOL号 100 2332 101 4443 我想解码列的空值。如果订单号为空,则显示“T”;如果订单号为空,则显示“P” 如何在此列中放置decode?尝试以下操作: SELECT Shipment, DECODE(O

我有一张桌子:

Shipment   Order_no   BOL_No
100        2332       <null>
101        <null>     4443
装运订单号BOL号
100        2332       
101             4443
我想解码列的空值。如果订单号为空,则显示“T”;如果订单号为空,则显示“P”

如何在此列中放置decode?

尝试以下操作:


SELECT Shipment, 
DECODE(Order_no, NULL, 'T') "Order_No",
DECODE(BOL_No, NULL, 'P') "BOL_No"
FROM `tablename`
试试这个:


SELECT Shipment, 
DECODE(Order_no, NULL, 'T') "Order_No",
DECODE(BOL_No, NULL, 'P') "BOL_No"
FROM `tablename`
使用NVL:

SELECT shipment, NVL(oder_no,'T'), NVL(bol_no,'P')
from table_name -- use the correct name
NVL返回第一个参数,除非它为NULL,在这种情况下它给出第二个参数。

使用NVL:

SELECT shipment, NVL(oder_no,'T'), NVL(bol_no,'P')
from table_name -- use the correct name
NVL返回第一个参数,除非它为NULL,在这种情况下,它会给出第二个参数。

使用以下命令:

select shipment
     , nvl(order_no,'T') order_no
     , nvl(bol_no,'P')   bol_no
  from t
     ;
注意数据类型不匹配,可能需要先将列内容转换为varchar2:

select shipment
     , nvl(to_char(order_no),'T')   order_no
     , nvl(to_char(bol_no),  'P')   bol_no
  from t
     ;
使用以下命令:

select shipment
     , nvl(order_no,'T') order_no
     , nvl(bol_no,'P')   bol_no
  from t
     ;
注意数据类型不匹配,可能需要先将列内容转换为varchar2:

select shipment
     , nvl(to_char(order_no),'T')   order_no
     , nvl(to_char(bol_no),  'P')   bol_no
  from t
     ;

小心打字。您的列看起来像数字。如果是,则应显式地将它们转换为字符串:

select shipment,
       coalesce(cast(order_no as varchar2(255)), 'T') as order_no,
       coalesce(cast(bol_no as varchar2(255)), 'P') as bol_no
from t;
依赖隐式转换可能会引入非常非常难以发现的数据错误


如果它们已经是字符串,那么只需使用
coalesce()
(不使用
cast()
coalesce()
是ANSI标准版的
nvl()

请注意类型。您的列看起来像数字。如果是,则应显式地将它们转换为字符串:

select shipment,
       coalesce(cast(order_no as varchar2(255)), 'T') as order_no,
       coalesce(cast(bol_no as varchar2(255)), 'P') as bol_no
from t;
依赖隐式转换可能会引入非常非常难以发现的数据错误

如果它们已经是字符串,那么只需使用
coalesce()
(不使用
cast()
coalesce()
nvl()
的ANSI标准版本