SQL 条件选择

标签 sql select conditional

我想创建一个带有指示应选择哪些字段的参数的存储过程。

例如。我想将两个参数“selectField1”和“selectField2”作为 bool 值传递。

然后我想要类似的东西

SELECT

if (selectField1 = true) Field1 ELSE do not select Field1

if (selectField2 = true) Field2 ELSE  do not select Field2

FROM Table

谢谢
卡尔

最佳答案

听起来他们希望能够只返回允许的字段,这意味着返回的字段数量也必须是动态的。这将适用于 2 个变量。除此之外的任何事情都会变得困惑。

IF (selectField1 = true AND selectField2 = true)
BEGIN
   SELECT Field1, Field2
   FROM Table
END
ELSE IF (selectField1 = true)
BEGIN
   SELECT Field1
   FROM Table
END
ELSE IF (selectField2 = true)
BEGIN
   SELECT Field2
   FROM Table
END

动态 SQL 将有助于倍数。此示例假设至少有 1 列为真。
DECLARE @sql varchar(MAX)
SET @sql = 'SELECT '
IF (selectField1 = true)
BEGIN
   SET @sql = @sql + 'Field1, '
END
IF (selectField2 = true)
BEGIN
   SET @sql = @sql + 'Field2, '
END
...
-- DROP ', '
@sql = SUBSTRING(@sql, 1, LEN(@sql)-2)

SET @sql = @sql + ' FROM Table'

EXEC(@sql)

关于SQL 条件选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1038435/

相关文章:

sql - 如何从表中选择层次结构中的最低级别

Excel创建多重条件排名

C# 条件等效于 !DEBUG

mysql - 慢更新查询

sql - 甲骨文 SQL : Receiving 'no matching unique or primary key' error and don't know why

sql-server - Select语句性能

jquery - 根据Collection_select选择菜单设置隐藏字段值

if-statement - PySpark:创建新列并根据其他两列的条件进行填充

mysql - 如果列只有两个特定值,sql select all

select - jQuery 组合框/选择自动完成?