Tsql 输出为空的T-SQL游标
在SQL游标上工作时,遇到右侧输出中的空白输出。检查PUBS数据库,并得到空白输出。酒吧剧本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
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语句就可以了。空白输出是由于使用了游标。