15

我正在使用 SQL Server Management Studio 将查询结果导出为文本。我想导出结果而不在分隔符之间打印字符 NULL。

例如,而不是:

,NULL, 

我想导出:

,,

谢谢你的帮助

4

3 回答 3

3

只需简单地使用

ISNULL(someColumn, '')

在我们的查询中。NULL这将用空字符串替换所有值

于 2013-06-26T14:51:59.107 回答
2

这取决于您如何导出数据。如果您使用导入和导出向导,NULL 字符串不会显示在结果文件中(使用 SQL Server Management Studio 2014 测试)。

选择任务 -> 导出数据... 在选择目标的对话框中,选择“平面文件目标”。然后,您可以编写自定义查询来选择数据。

于 2017-09-15T17:03:35.683 回答
0

我喜欢让 SQL 编写我的 SQL。这扩展了@marc_s 的答案,解决了@HardCode 提出的数据类型问题,并像@hamel 要求的那样简单。

对于此类任务,自动代码生成是一种非常省力的方法,而 INFORMATION_SCHEMA 使得它在 SQL 中成为可能。

-- Sample data.
drop table if exists #null_demo;
create table #null_demo (
    int_col int,
    numeric_col numeric(10, 2),
    varchar_col varchar(50),
    date_col date,
    datetime_col datetime2
    );
insert into #null_demo values (1, 2.0, 'string', getdate(), getdate())
insert into #null_demo values (null, 2.0, 'string', getdate(), getdate())
insert into #null_demo values (1,null, 'string', getdate(), getdate())
insert into #null_demo values (1, 2.0, null, getdate(), getdate())
insert into #null_demo values (1, 2.0, 'string', null, getdate())
insert into #null_demo values (1, 2.0, 'string', getdate(), null)

-- Ordinary select returns NULL
select  *
from    #null_demo

-- Observe INFORMATION_SCHEMA
select  *
from    TEMPDB.INFORMATION_SCHEMA.COLUMNS
where   TABLE_NAME like '#null_demo%'

-- Let SQL write your SQL.
select  COLUMN_NAME+' = isnull(cast('+COLUMN_NAME+' as varchar), ''''),'
from    TEMPDB.INFORMATION_SCHEMA.COLUMNS
where   TABLE_NAME like '#null_demo%'

将结果复制到查询中并删除最后的尾随逗号。

select  int_col = isnull(cast(int_col as varchar), ''),
        numeric_col = isnull(cast(numeric_col as varchar), ''),
        varchar_col = isnull(cast(varchar_col as varchar), ''),
        date_col = isnull(cast(date_col as varchar), ''),
        datetime_col = isnull(cast(datetime_col as varchar), '')
from    #null_demo

当我将文本输出格式设置为逗号分隔并包含列标题(请参阅查询-> 查询选项-> 文本)并将结果作为文本返回时,我得到了这个。

int_col,numeric_col,varchar_col,date_col,datetime_col
1,2.00,string,2021-08-19,2021-08-19 14:44:00.5466667
,2.00,string,2021-08-19,2021-08-19 14:44:00.5466667
1,,string,2021-08-19,2021-08-19 14:44:00.5466667
1,2.00,,2021-08-19,2021-08-19 14:44:00.5466667
1,2.00,string,,2021-08-19 14:44:00.5466667
1,2.00,string,2021-08-19,

我也可以将其发送到文件中。

于 2021-08-19T19:04:12.737 回答