[英]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.