回答

收藏

SQL条件选择

技术问答 技术问答 2489 人阅读 | 0 人回复 | 2023-09-14

我想创建一个存储过程,指示应该选择哪些字段。& R2 _9 ^4 N8 H5 L1 }
比如我想把两个参数 selectField1”和“ selectField分别作为布尔值传递。
; b7 D0 k/ n$ f% o然后我想要类似的东西
# N; ?8 Z* j0 W6 |1 p; j+ h4 A+ \$ F0 xSELECTif (selectField1 = true) Field1 ELSE do not select Field1if (selectField2 = true) Field2 ELSE  do not select Field2FROM Table谢谢卡尔9 r0 ?& ?$ g7 o5 m/ o
                                                               
$ {8 s  V9 W2 ^; z! y! B) _1 s    解决方案:                                                               
/ O0 K9 J$ V% h+ q                                                                听起来他们只想返回允许字段的能力,这意味着返回字段的数量必须是动态的。这将使用两个变量。此外,任何其他事情都会变得令人困惑。5 j# H+ \) V$ k* u0 F2 P
IF (selectField1 = true AND selectField2 = true)BEGIN   SELECT Field1,Field2   FROM TableENDELSE IF (selectField1 = true)BEGIN   SELECT Field1   FROM TableENDELSE IF (selectField2 = true)BEGIN   SELECT Field2   FROM TableEND动态SQL帮助倍数。假设至少有一个例子是真的。7 J8 }4 t  E2 C
DECLARE @sql varchar(MAX)SET @sql = 'SELECT 'IF (selectField1 = true)BEGIN   SET @sql = @sql   'Field1,'ENDIF (selectField2 = true)BEGIN   SET @sql = @sql   'Field2,'END...-- DROP ','@sql = SUBSTRING(@sql,1,LEN(@sql)-2)SET @sql = @sql   ' FROM Table'EXEC(@sql)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

27 积分
7 主题