Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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
传递varchar类型参数并在set@SQL中使用它_Sql_Sql Server - Fatal编程技术网

传递varchar类型参数并在set@SQL中使用它

传递varchar类型参数并在set@SQL中使用它,sql,sql-server,Sql,Sql Server,我有一个存储过程,它有以下行: SET @SQL = 'SELECT path,title,tags FROM ( SELECT ROW_NUMBER() OVER(ORDER BY file_number) AS Row, * FROM files) AS tbl WHERE file_number IN (SELECT tag_file_number

我有一个存储过程,它有以下行:

SET @SQL = 'SELECT path,title,tags
            FROM (
                  SELECT ROW_NUMBER() OVER(ORDER BY file_number) AS Row, *
                  FROM  files) AS tbl 
            WHERE file_number IN (SELECT tag_file_number 
                                  FROM tags 
                                  WHERE tag LIKE ' + @Conditions + '), Row >= '
                   + CONVERT(varchar(9), @StartIdx) + ' AND
                   Row <= ' + CONVERT(varchar(9), @EndIdx)
当我将“bus”作为参数值传递时,我得到一个错误。我的目标是传递一个SQL查询并将其替换为@conditions

我也可能通过“%bu%”或像%time%这样的标记或像%bus time%这样的标记。我认为这并不难做到,但我就是搞不清楚。这是一个非常具体的问题,所以我甚至不能用谷歌搜索它。请帮帮我。如果你需要更多的信息,请告诉我

如果缺少引号,请按如下方式尝试:

SET @SQL = 'SELECT path,title,tags
        FROM (
        SELECT  ROW_NUMBER() OVER(ORDER BY file_number) AS Row, *
              FROM  files ) AS tbl WHERE file_number in(select tag_file_number from tags where tag like "' + @Conditions + '"), Row >= '
                            + CONVERT(varchar(9), @StartIdx) + ' AND
               Row <=  ' + CONVERT(varchar(9), @EndIdx)
现在发生的事情是标记类似于总线的位置,它必须是标记类似于总线的位置。

如果缺少引号,请这样尝试:

SET @SQL = 'SELECT path,title,tags
        FROM (
        SELECT  ROW_NUMBER() OVER(ORDER BY file_number) AS Row, *
              FROM  files ) AS tbl WHERE file_number in(select tag_file_number from tags where tag like "' + @Conditions + '"), Row >= '
                            + CONVERT(varchar(9), @StartIdx) + ' AND
               Row <=  ' + CONVERT(varchar(9), @EndIdx)

现在发生的是where标记类似于bus,它必须是where标记类似于bus。

在like语句之后的查询中缺少引号。应该是“++@Conditions+”谢谢你指出这一点。我现在明白了。在like语句之后的查询中缺少引号。应该是“++@Conditions+”谢谢你指出这一点。我现在明白了。非常感谢你!现在对我有用了。基本上,我不知道如何使用嵌套引号。我感谢你的帮助。@Amandepsaini那么你应该投赞成票并接受答案:上面说,投赞成票需要15%的声誉。很抱歉,如果可能的话我会的。非常感谢!现在对我有用了。基本上,我不知道如何使用嵌套引号。我感谢你的帮助。@Amandepsaini那么你应该投赞成票并接受答案:上面说,投赞成票需要15%的声誉。很抱歉,如果可能的话我会的。