【发布时间】:2015-08-03 14:24:22
【问题描述】:
下面是一个在输入字符串的指定侧将输入字符串填充到所需长度的函数。当由 SSIS 执行时,元数据没有返回所需的长度。我需要它将适当的数据长度返回给 SSIS。
CREATE FUNCTION [dbo].[udf_FillField]
(
@StringOrg nvarchar(max), --Original string
@LengthOfStringOutPut int, --Length of output sting
@FillChr nvarchar(1), --Char to pad the original string
@LRJustified nvarchar(1) --Left or right justified
)
RETURNS nvarchar(max)
AS
BEGIN
-- Declare Variable(s)
DECLARE @Result nvarchar(max)
-- Left Justified
IF @LRJustified = 'L'
BEGIN
SET @Result =
LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut) +
REPLICATE(@FillChr, (@LengthOfStringOutPut - LEN(LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut))))
END
-- Right Justified
IF @LRJustified = 'R'
BEGIN
SET @Result =
REPLICATE(@FillChr, (@LengthOfStringOutPut - LEN(LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut)))) +
LEFT(ISNULL(@StringOrg, ''), @LengthOfStringOutPut)
END
-- Incorrect Parameter Input
IF @LRJustified <> 'R' AND @LRJustified <> 'L'
BEGIN
SET @Result =
NULL
END
-- Output Data
RETURN @Result
END
【问题讨论】:
-
它正在返回
nvarchar(max)SSIS 没有增加那个长度吗? -
这就是我遇到的问题。我需要它来获取实际输出的长度。如果返回长度为 30 的字符串,我需要 SSIS 来获取长度为 30 的字符串。此函数用于生成非常大文件的查询。每列都有特定的长度,因为它是固定宽度的文件格式。