传递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%的声誉。很抱歉,如果可能的话我会的。