繁体   English   中英

如何从 Microsoft T-SQL 返回空格?

[英]How do I return a space from Microsoft T-SQL?

我希望 SQL 返回"*"" " (以获得更进一步的间距)。 当被告知返回 " " 时,它返回"*""" " "

从其他问题和我自己的尝试来看,这似乎没有解决方法。 你有解决方案吗?

CREATE FUNCTION [dbo].[fn_nettAsStar]
    (@isNett bit)
RETURNS char(1)
AS
BEGIN
    /* set space */
    DECLARE @nett char(1)
    SET @nett = ' ' 

    IF @isNett = 1
    BEGIN
        SET @nett = '*'
    END

    RETURN @nett

我同意@Martin

如果您使用 LEN 得出的结论是它是一个空字符串而不是一个空格,那么这不计算尾随空格,因此将返回零

当您将值'abc'放入CHAR(5)类型的字段/变量中时,该值将变为'abc ' ,但在这种情况下, LEN function 仍将“正确”返回 3。 但如果您使用DATALENGTH而不是 LEN,您会看到它实际上是 5 个字符长。 如果您使用VARCHAR(5)定义变量,则再次使用 LEN 将为您提供 0 长度,但DATALENGTH将为您提供 1

请注意:VARCHAR 是可变长度字符

总结

@nett varchar(1) = ''  => LEN = 0, DATALENGTH = 0
@nett varchar(1) = ' '  => LEN = 0, DATALENGTH = 1
@nett    char(1) = ''  => LEN = 0, DATALENGTH = 1
@nett    char(1) = ' '  => LEN = 0, DATALENGTH = 1

感谢您的回答。 我正在使用 function 构建一个报告行,当返回“空格”时,它会缩短 1 个字符。 正如建议的那样,我使用 LEN() 检查我得到的是一个空字符串。

我的解决方案是使用程序代码而不是 SQL 来格式化字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM