通过SQL查询语句导出到Excel / csv时如何保持前导/前缀零?

时间:2019-06-26 09:33:59

标签: sql oracle oracle-sqldeveloper export-to-csv export-to-excel

我使用Oracle,并且想知道在通过以下SQL查询语句导出到Excel / csv时如何保持前导/前缀零?

假设B.h(字符串类型)的值可能为00068573和098235

SELECT A.e,
       A.f,
       A.g,
       B.h
FROM A 
JOIN C ON C.e=A.e
JOIN B ON C.j=B.j; 

然后我用Python导出数据,部分代码如下:

for row_data in cursor:
    output.writerow(row_data)

非常感谢您的任何建议。

3 个答案:

答案 0 :(得分:0)

set heading off
set termout OFF
SET FEEDBACK OFF
SET TAB OFF
set pause off
set verify off
SET UNDERLINE OFF
set trimspool on
set timing off
set echo off
set linesize 1000
set pagesize 0
COLUMN CODE2 FORMAT 09999999
SET COLSEP ';'
spool test.csv

SELECT A.e,
       A.f,
       A.g,
       B.h as code2
FROM A 
JOIN C ON C.e=A.e
JOIN B ON C.j=B.j; 
spool off
exit;

或使用to_char(B.h, '09999999')

set heading off
    set termout OFF
    SET FEEDBACK OFF
    SET TAB OFF
    set pause off
    set verify off
    SET UNDERLINE OFF
    set trimspool on
    set timing off
    set echo off
    set linesize 1000
    set pagesize 0
    SET COLSEP ';'
    spool test.csv

    SELECT A.e,
           A.f,
           A.g,
           to_char(B.h, '09999999')
    FROM A 
    JOIN C ON C.e=A.e
    JOIN B ON C.j=B.j; 
    spool off
    exit;

如果该字段是字符,则需要使用lpad函数。

 SELECT A.e,
           A.f,
           A.g,
           LPAD(B.h, 9, '0') 
    FROM A 
    JOIN C ON C.e=A.e
    JOIN B ON C.j=B.j;

答案 1 :(得分:0)

您必须已完成csv格式的导出。从Oracle导出,您将获得包括前导零的实际值。在文本编辑器中打开.csv文件,然后检查值。如果您通过使用任何IDE(即SQL开发人员)进行导出,则与sql无关。

答案 2 :(得分:0)

上面说的完全正确,将添加:-

  • 通过双击打开csv在excel中打开它,不会显示结尾的零。
  • 您可以在文本中打开以确认是否为零。
  • 现在可以在excel中使用,只需打开一个新的excel >>转到“数据”选项卡>>“获取数据” >>从文件中选择csv / txt。这样一来,它就可以正确加载而不会删除尾随的零。您还可以选择更改编码等选项。