首页 > 解决方案 > 通过 SQL 查询语句导出到 Excel/csv 时如何保持前导/前缀零?

问题描述

我使用 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)

非常感谢您的任何建议。

标签: sqloracleoracle-sqldeveloperexport-to-csvexport-to-excel

解决方案


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;

推荐阅读