Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Sql where条件中返回的空名称_Sql_Sql Server_Sql Server 2008_Tsql_Dynamic Sql - Fatal编程技术网

Sql where条件中返回的空名称

Sql where条件中返回的空名称,sql,sql-server,sql-server-2008,tsql,dynamic-sql,Sql,Sql Server,Sql Server 2008,Tsql,Dynamic Sql,这是我的动态查询: exec sp_executesql N'SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY NAME asc) peta_rn, peta_query.* From (Select BOOK, PageINT, PageCHAR NAME, TYPE, PDF From test1 cdn Inner Join test2 cwi

这是我的动态查询:

exec sp_executesql N'SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY NAME asc) peta_rn, peta_query.* 
    From (Select BOOK, PageINT, PageCHAR NAME, TYPE, PDF From test1 cdn
                            Inner Join test2 cwi
                                On cwi.ID = cdn.ID Where 1=1  And IsNull(NAME,'''') Like COALESCE(@0,'''') + ''%''  )
                                 as peta_query) peta_paged WHERE peta_rn>@1 AND peta_rn<=@2',N'@0 varchar(4000),@1 bigint,@2 bigint',@0='Miller',@1=0,@2=50

正如你们所看到的,我只是在寻找米勒,但我得到的名字也是空的。我错过了什么?任何帮助都将不胜感激。

我发现您的SQL表达式中存在问题,这可能是内部select中问题的根源:

From (Select BOOK, PageINT, PageCHAR NAME, TYPE, PDF From test1 cdn
    Inner Join test2 cwi
    On cwi.ID = cdn.ID 
    Where 1=1  And IsNull(NAME,'''') Like COALESCE(@0,'''') + ''%''  )
我相信谓词IsNullNAME,比如COALESCE@0,+%您打算引用PageCHAR名称,但这不会发生

SELECT语句是最后要执行的部分之一,其中将首先执行,并且不知道PageCHAR是否被别名为NAME

因此,如果您打算使用PageCHAR,请将谓词更改为IsNullPageCHAR,如COALESCE@0,+%

我不知道列名是从哪里来的。在您的表中的某个地方可能有一个名称列,或者可能发生了一些非常疯狂的事情,因为名称确实存在于CTE之外,但我认为不是这样

同时,将函数应用于谓词的左侧肯定会使其不使用索引,因此请确保确实要这样做


关于select语句中的执行顺序,这里有一个有用的链接:

U应该尝试用左外连接替换内部连接这不是答案。问题是为什么返回空名称的记录?您应该试着理解这个问题。我只希望它是内部连接,但返回包含Miller的名称。你能理解这个问题吗?我认为test2cwi是两个词->表test2和别名cwiYes,这是正确的。改变了。这是个打字错误,太棒了!正是我需要的。