如何使Microsoft BCP导出空字符串而不是NULL char?

时间:2012-09-25 17:31:40

标签: sql tsql bcp

我正在尝试让这个bcp工具以特定方式工作。 -c开关应该使用chars导出,但由于某些原因,在Notepad ++中显示了一个奇怪的char,如果它是UNICODE或其他格式。

我想获取该数据库中的空字符串char,将其作为空字符串导出到文本文件中。你是怎么做到的?

2 个答案:

答案 0 :(得分:24)

好吧,浏览网页后,这就是我发现的内容。考虑将其置于SO中以便更多人可以访问它。

http://www.techtalkz.com/microsoft-sql-server/147106-how-export-empty-strings-via-bcp.html

  

但是当我运行bcp时,空字符串被写入文本文件   使用ASCII“NUL”字符(0x0)。相反,我想要这个领域   填充空白(0x20)。

解决方案:

  

在文本文件中,批量处理时,空字符串将被解释为NULL   在数据中。 NUL字符被解释为空字符串,所以   有一致性。但是,如果您要出口,这没有多大帮助   数据到另一个系统......

简单地在数据库中包含可能为空的NULLIF字段,并使其捕获''并替换为NULL。这将转换为^^值^^^^更多值^^和更多^^所以你得到一个空格而不是NUL字符的双分隔符。

E.g:

...
NULLIF(pri.InstanceName, '') as PerformanceInstanceName,
...

希望这有助于某人。

答案 1 :(得分:0)

只是后续行动......

上面的NULLIF解决方案在Microsoft SQL中运行良好,但对于几乎适用于任何数据库的更标准化的解决方案,您应该尝试COALESCE

语法非常相似:

COALESCE(pri.InstanceName, '') as PerformanceInstanceName