Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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 输出为空的T-SQL游标_Tsql - Fatal编程技术网

Tsql 输出为空的T-SQL游标

Tsql 输出为空的T-SQL游标,tsql,Tsql,在SQL游标上工作时,遇到右侧输出中的空白输出。检查PUBS数据库,并得到空白输出。酒吧剧本 DECLARE @auid varchar(30) DECLARE CURSOR_AuthorTitle CURSOR FOR SELECT au_id FROM authors order by au_lname OPEN CURSOR_AuthorTitle FETCH NEXT FROM CURSOR_AuthorTitle INTO @auid WHILE @@Fetc

在SQL游标上工作时,遇到右侧输出中的空白输出。检查PUBS数据库,并得到空白输出。酒吧剧本

DECLARE @auid varchar(30)
DECLARE CURSOR_AuthorTitle CURSOR FOR
    SELECT au_id FROM authors order by au_lname
OPEN CURSOR_AuthorTitle
    FETCH NEXT FROM CURSOR_AuthorTitle INTO @auid 
    WHILE @@Fetch_Status = 0 
    BEGIN
        ;With authortitle_id as 
        (SELECT a.au_id, title_id, au_fname, au_lname, royaltyper 
        FROM authors a, titleauthor ta 
        WHERE a.au_id=ta.au_id) 

        SELECT 'Author Name' =  au_fname +' ' + au_lname, 'Book Title'= title 
        FROM authorTitle_id at, titles t 
        WHERE at.title_id=t.title_id and au_id=@auid   
        ORDER BY au_lname

    FETCH NEXT FROM CURSOR_AuthorTitle INTO @auid
    END
CLOSE CURSOR_AuthorTitle
DEALLOCATE CURSOR_AuthorTitle

获得了作者和书籍列表,但也有一些空白输出。我想去掉空白输出。提前感谢您的帮助。

连接空值时要小心。如果您有空列,那是因为您有一些空列。记住:

'your string'+null
=
null

请尝试像这样使用ISNULL():

'your string'+ISNULL(null')
=
'your string'

您的代码:

SELECT 'Author Name' =  au_fname +' ' + au_lname, 'Book Title'= title 
应该是:

SELECT 'Author Name' =  ISNULL(au_fname+' ','') + ISNULL(au_lname,'')

如果您有空行,那是因为您的作者没有任何标题。我不知道为什么您不对此进行一次查询,而忘记光标。

FYI,您的连接语法是1992年以前的,并且不在每一列上使用表别名值。不需要使用游标和/或CTE,它应该是一个查询。感谢您的评论。我是SQL的新手,正在从事硬件项目。1992年以前是什么意思?我应该指定内部联接吗?如果在
FROM
子句中用逗号分隔表,并将联接条件放在
WHERE
子句中,则使用的是过时的SQL标准。您应该使用连接语法,如
内部连接。。。。在…
左侧外部联接。。。。在…
,等等,您所说的空白输出是什么意思?空(如“0行”)结果集?还是包含空(空?)内容的非空集?谢谢。我尝试了ISNULL(),但它没有清除空白输出。只要运行Select语句就可以了。空白输出是由于使用了游标。