SQL:用SPACE替换NULL

时间:2015-02-26 09:32:04

标签: sql oracle

我想创建一个固定长度的平面文件(用','分隔),但是当一个字段有一个空值时,记录会移动。请参见下图(不正确的Jenny和Roland记录):

来源表:

Name    Color  Balance Zip Code
------- ------ ------- --------
Melissa Orange $200.00 40240
Karl    Blue   $150.00 40884
Jenny   -null- -null-  45667
Roland  -null- $110.00 53366
Vincent Green  $285.00 45677

我想得到的输出:

Correct_Ouput
----------------------------
Melissa,Orange,$200.00,40240
Karl   ,Blue  ,$150.00,40884
Jenny  ,      ,       ,45667
Roland ,      ,$110.00,53366
Vincent,Green ,$285.00,45677

我想得到的输出:

Wrong_Output
----------------------------
Melissa,Orange,$200.00,40240
Karl   ,Blue  ,$150.00,40884
Jenny  ,,,45667
Roland ,,$110.00,53366
Vincent,Green ,$285.00,45677

我尝试搜索但是我得到null为空字符串结果。

请帮忙。谢谢。

2 个答案:

答案 0 :(得分:2)

使用COALESCE(column,' ')功能。

对于某些数据库,您可以使用IFNULL或NVL。有关详细信息,请参阅this web page

答案 1 :(得分:0)

您可以使用 NVL NULL 值替换为所需数量的空格以保留格式。

例如,

SQL> SELECT 'Karl' NAME,
  2    NVL('Blue', '     ') color,
  3    NVL('$150.00','         ') balance,
  4    40884 zip_code
  5  FROM dual
  6  UNION ALL
  7  SELECT 'Jenny' name,
  8    NVL(NULL, '     ') color,
  9    NVL(NULL,'         ') balance,
 10    45667 zip_code
 11  FROM dual
 12  /

NAME  COLOR BALANCE     ZIP_CODE
----- ----- --------- ----------
Karl  Blue  $150.00        40884
Jenny                      45667

SQL>

您也可以使用 DECODE

例如,

DECODE(column, NULL, ' ')