Where子句中的问题 [英] Problem in Where Clause
本文介绍了Where子句中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Hello Everybody,
以下问题中的问题:
Hello Everybody,
Problem in below query:
DECLARE @First_CName VARCHAR(50)
SET @First_CName='Source_Id'
SELECT * FROM SourceDest_Details WHERE @First_CName =CAST(45 AS VARCHAR(50))--- This query is not working
但是,
But,
SELECT * FROM SourceDest_Details WHERE Source_Id=45-- This Query is Working
我可以知道原因以及第一次查询是否有可能工作
May i know the reason and if there is any possibility for first query to work
推荐答案
试试这个
try this
DECLARE @First_CName VARCHAR(50)
SET @First_CName='Source_Id'
DECLARE @SQL varchar(1000)
SET @SQL = 'SELECT * FROM SourceDest_Details WHERE ('+@First_CName+'=CAST(''45'' AS VARCHAR(50)))'
EXEC(@SQL)
您不能像使用变量内容那样动态更改SQL语句的结构。
如果您需要声明是动态的,请查看 sp_executesql [ ^ ]
You cannot dynamically change the structure of an SQL statement like that using variable contents.
If you need the statement to be dynamic, have a look at sp_executesql[^]
如果你应该在where子句中使用像@First_CName这样的动态变量你一定要使用动态T_SQL
DECLARE @First_CName VARCHAR(50),
@lssql nvarchar(100)=''
SET @First_CName ='Source_Id'
set @ lssql ='SELECT * FROM SourceDest_Details WHERE('+ @ First_CName +'= CAST(''45''AS VARCHAR(50)))'
print @lssql
执行sp_executesql @lssql
if you are supposed to use dynamic variables like @First_CName in where clause you have to surely use dynamic T_SQL
DECLARE @First_CName VARCHAR(50),
@lssql nvarchar(100)=''
SET @First_CName='Source_Id'
set @lssql='SELECT * FROM SourceDest_Details WHERE ('+@First_CName+'=CAST(''45'' AS VARCHAR(50)))'
print @lssql
execute sp_executesql @lssql
这篇关于Where子句中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文