如何从SQL格式正确返回NVCHAR字符串

时间:2015-06-30 10:22:04

标签: sql sql-server-2008 ssms

在我们的业务中,我们有一个程序,通过函数,我们可以返回系统生成的电子邮件和字母的合并字段。

我正在尝试使用NVCHAR使用游标编写一个,但是对于发票列表的输出存在问题,创建字符串的部分是:

BEGIN
    IF ( @Schedule <> '' )
        BEGIN
            SET @Schedule = @Schedule + CHAR(10) + CHAR(13);
        END;

    SET @Schedule = @Schedule + CONVERT(VARCHAR(10), @InvoiceDate, 103)
        + ' | ' + CONVERT(VARCHAR(50), @InvoiceNumber) + CHAR(9) + ' | '
        + CONVERT(VARCHAR(600), @InvoiceDescrip) + CHAR(9) + ' | '
        + CONVERT(VARCHAR(10), @InvoiceAmount) + CHAR(13);
END;

现在因为发票号和说明可以是不同的长度,它给合并字段的输出如下:

09/06/2014 | 1568        | Item 248              | 100.00
01/08/2014 | 123         | Item 23               | 100.00 
18/08/2014 | Inv #12345  | Warehouse machine     | 2000.00

我正在寻找的是输出如下:

09/06/2014 | 1568        | Item 248              | 100.00
01/08/2014 | 123         | Item 23               | 100.00
18/08/2014 | Inv #12345  | Warehouse machine     | 2000.00

希望这个问题有道理,我在其他地方搜索过,但似乎找不到与此有关的东西。

感谢任何人可以提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

SET @Schedule = @Schedule + CONVERT(VARCHAR(10), @InvoiceDate, 103)
        + ' | ' + CONVERT(CHAR(50), @InvoiceNumber) + CHAR(9) + ' | '
        + CONVERT(CHAR(600), @InvoiceDescrip) + CHAR(9) + ' | '
        + CONVERT(CHAR(10), @InvoiceAmount) + CHAR(13);

将varchar更改为数据最大长度的char。 Char将确保数据具有固定长度。