Declare @tempvar as Varchar(10)
Set @tempvar='true'
select dbo.InformationTable.Name,dbo.InformationTable.Address,dbo.InformationTable.FavoriteDish
from dbo.InformationTable
我只想在dbo.InformationTable.FavoriteDish
设置为@tempvar
时显示true
列,否则它不会包含在select语句中?我怎样才能实现此功能。谢谢。
答案 0 :(得分:1)
不幸没有有效的方式有条件地从SELECT
查询中排除列。
你可以这样做:
DECLARE @tempvar AS VARCHAR(10)
SET @tempvar='true'
IF @tempvar = 'true'
BEGIN
SELECT
dbo.InformationTable.Name,
dbo.InformationTable.Address,
dbo.InformationTable.FavoriteDish
FROM
dbo.InformationTable
END
ELSE
BEGIN
SELECT
dbo.InformationTable.Name,
dbo.InformationTable.Address
FROM
dbo.InformationTable
END
或者,如果您不介意将列作为结果集的一部分降序(具有NULL
值),请执行以下操作:
SELECT
dbo.InformationTable.Name,
dbo.InformationTable.Address,
CASE
WHEN @tempvar = 'true' THEN
dbo.InformationTable.FavoriteDish
ELSE NULL
END FavoriteDish
FROM
dbo.InformationTable
您还可以在VARCHAR
变量中动态构建查询,并将其传递给EXEC
方法:
DECLARE @myquery VARCHAR(1000)
/*
Build your query here on your own conditions
*/
EXEC(@myquery)
我强烈反对最后一个,因为it comes with multiple tradeoffs。
希望有所帮助。