我正在使用 SQL Server Management Studio 将查询结果导出为文本。我想导出结果而不在分隔符之间打印字符 NULL。
例如,而不是:
,NULL,
我想导出:
,,
谢谢你的帮助
我正在使用 SQL Server Management Studio 将查询结果导出为文本。我想导出结果而不在分隔符之间打印字符 NULL。
例如,而不是:
,NULL,
我想导出:
,,
谢谢你的帮助
只需简单地使用
ISNULL(someColumn, '')
在我们的查询中。NULL
这将用空字符串替换所有值
这取决于您如何导出数据。如果您使用导入和导出向导,NULL 字符串不会显示在结果文件中(使用 SQL Server Management Studio 2014 测试)。
选择任务 -> 导出数据... 在选择目标的对话框中,选择“平面文件目标”。然后,您可以编写自定义查询来选择数据。
我喜欢让 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,
我也可以将其发送到文件中。