Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个TSql返回一个空白或空值?_Sql_Tsql - Fatal编程技术网

为什么这个TSql返回一个空白或空值?

为什么这个TSql返回一个空白或空值?,sql,tsql,Sql,Tsql,为什么下面代码中的@result值打印出一个空白字符串?我希望它与前面的结果连接起来 DECLARE @size int DECLARE @string nvarchar(10) DECLARE @result nvarchar(10) SELECT @string = '12345abc123' DECLARE @count int, @total int SELECT @total = LEN(@string), @count = 1 WHILE @count <=

为什么下面代码中的@result值打印出一个空白字符串?我希望它与前面的结果连接起来

DECLARE @size int
DECLARE @string nvarchar(10)
DECLARE @result nvarchar(10)
SELECT  @string = '12345abc123'
DECLARE @count int, @total int
SELECT
    @total = LEN(@string),
    @count = 1

WHILE @count <= @total
    BEGIN
    SELECT  @result = SUBSTRING(@string, @count, 1) + '-'+ @result 
    SELECT  @count = @count + 1
    PRINT @result
    END
DECLARE@size int
声明@string nvarchar(10)
声明@result nvarchar(10)
选择@string='12345abc123'
声明@count int,@total int
挑选
@总计=长度(@string),
@计数=1

虽然@count您从未初始化过
@result
,因此它默认为sql
null
。SQL空值是会传染的毒药,所以当您这样做时

SELECT @result = .... + @result
你真的在做什么

SELECT @result = ... + null
@result
只是保持
null

将值初始化为空字符串可以解决您的问题:

SET @result = ''

它返回一个空白,因为您正在将子字符串与@result连接起来,后者最初为NULL

尝试将@result设置为空字符串,如下所示:

SELECT  @string = '12345abc123', @result = ''

您必须初始化@result变量

像这样申报

DECLARE @result nvarchar(10) = ''
这应该行得通