以wqell格式化方式从select查询输出数据到文本文件

时间:2012-04-19 07:19:15

标签: sql-server-2005

我有一个表客户

 CustomerID             DOB
 1                      11/12/1983
 2                      12/12/1983
 3                      12/12/1985
34334                   23/12/1986
 1232                   15/12/1983
 232                    13/12/1987
 343                    24/12/1987
 1342                   22/12/1988
 121111                 02/12/1989
 243233233              12/12/1983 

当我将数据输出到文本文件时,数据格式不正确,  我需要得到一个格式良好的结果,如下所示如何设置结果以这种方式

我的外出应该看起来像这样

 CustomerID                     DOB
 000000001                      11/12/1983
 000000002                      12/12/1983
 000000003                      12/12/1985
 000034334                      23/12/1986
 000001232                      15/12/1983
 000000232                      13/12/1987
 000000343                      24/12/1987
 000001342                      22/12/1988
 000121111                      02/12/1989
 243233233                      12/12/1983 

我的查询看起来像这样 EXEC master..xp_cmdshell'bcp“SELECT * from MainDB.dbo.Customer”queryout“F:\ output \ Temp.txt”-c -T -x -t“|”'

2 个答案:

答案 0 :(得分:2)

您可以使用REPLICATE。这会在CustomerID的开头添加零。像这样:

DECLARE @tbl TABLE(CustomerID INT)

INSERT INTO @tbl
VALUES
    (1),(2),(34334)

SELECT
   REPLICATE('0',9-LEN(CustomerID))+CAST(CustomerID AS VARCHAR(100))
FROM
   @tbl AS tbl

参考here

修改

所以你的查询看起来像这样:

SELECT 
    (
       REPLICATE('0',9-LEN(CustomerID))+
       CAST(CustomerID AS VARCHAR(100))
    ) AS CustomerID,
    DOB
FROM 
    MainDB.dbo.Customer

答案 1 :(得分:0)

CustomerID列转换为varchar(在输出过程中),它应删除前导零。