我这里有两张桌子......
- GroupTable:uid,Level1,Level2,WhereClause
- MainTable:uid,名称
醇>
我需要创建一些允许我使用WhereClause字段作为查询的实际WHERE子句的东西。
即
select *
from MainTable
inner join GroupTable on GroupTable.uid=MainTable.uid
where {WhereClause}
换句话说,会将WhereClause字段评估为实际SQL。 WhereClause可能等于(1,2,3)'中的字段或类似的。我不喜欢这样做,但如果可能的话,重写这个过程目前还不行。希望有人可能会指出我正确的方向。谢谢!
答案 0 :(得分:0)
您可以使用动态sql执行此操作,然后执行动态创建的sql字符串。
答案 1 :(得分:0)
不确定你想要什么,但
如果您愿意,可以像这样动态使用:
DECLARE @where NVARCHAR(500) = ''
SET @where = ' userid = 3 '
EXEC ( ' SELECT * FROM table_name WHERE ' + @where )
SET @where = ' userid IN (2,3,4) '
EXEC ( ' SELECT * FROM table_name WHERE ' + @where )
-- Or you can also use other typo things.
如果你确切地解释了你需要什么,我可能会帮忙。
希望它有所帮助,无论如何。 :)
答案 2 :(得分:0)
你可以这样做:
SELECT 'select * FROM mainTable
inner join GroupTable on GroupTable.uid=MainTable.uid
where ' + t.whereClause
FROM GroupTable
这将产生您想要的查询。
答案 3 :(得分:0)
这是使用动态sql的一个很好的例子,特别是动态的where子句,其中大部分都是这样的:
DECLARE @SQL varchar(1000)
SET @SQL = 'SELECT Cus_Name, Cus_City, Cus_Country FROM Customers '
IF @Cus_Name IS NOT NULL OR @Cus_City IS NOT NULL OR _
@Cus_Country IS NOT NULL
SET @SQL = @SQL + 'WHERE '
IF @Cus_Name IS NOT NULL
SET @SQL = @SQL + 'Cus_Name = ' + @Cus_Name
...
EXEC(@SQL)