我有一个SQL视图,其中包含一个带有连接文本的列。
本文来自一个函数:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[FC01_FunctionName]
(@OrderNr VARCHAR(200))
RETURNS VARCHAR(2000)
BEGIN
declare @r varchar(2000)
declare @z varchar(2000)
DECLARE cc CURSOR FOR
SELECT SL.Description
FROM dbo.[DBName] SL
WHERE x = @OrderNr AND y = 1
SET @r = ''
OPEN cc
WHILE ( 0 = 0 )
BEGIN
fetch next from cc into @z
if (@@fetch_status <> 0)
break
if ( @r = '' )
begin
set @r = @z
end
else
begin
set @r = @r + char(13) + char(10) + @z
end
end
close cc
deallocate cc
return @r
end
结果如下:
正如你所看到的那样,有时它只是'一个'文本元素,比如'24小时呼叫。 ...'有时会有多个文字元素,例如' *项目编号 请...... * ......'等等。
每次将视图导出到.csv
文件时,我都会遇到包含多个文本元素的行的问题。它会为每个附加文本元素生成一个新行并破坏格式(所有黄色标记的文本应该在一个字段中 - &gt;带有文本'*** Item ...'的字段):
在最后一个(黄色标记的)文本元素之后,正常条目继续。
执行SQL视图到.csv
导出的作业的属性如下:
sqlcmd -W -s ";" -E -d master -Q "SET NOCOUNT ON; SELECT * FROM [DB].[dbo].[ViewName];" -o "c:\Temp\XXX.csv"
我认为导出函数认为文本元素是分开的,这可能是函数决定为每个元素花费新行的原因。 我也相信我必须在sql函数中改变一些东西,它会为字段创建结果,或者在视图中自己获取数据。
这是视图中获取数据的SQL查询的一部分:
(SELECT [dbo].[FC01_FunctionName] ( x.[FieldName]) ) as [ColumnName],
有什么想法吗?谢谢你的帮助!
答案 0 :(得分:0)
在Excel中查看文本到列设置。可能是csv导出正确(在记事本中打开以进行检查)但Excel会在文件打开时拆分行。