根据sql中的case语句创建select语句

Ben*_*Ben 1 sql

sql中有没有一种干净的方法来基于case语句创建select语句?

我正在寻找基本逻辑像

   CASE @tableToUse
           WHEN 'Table1' SELECT * FROM Table1 
           WHEN 'Table2' SELECT * FROM table2 
           DEFAULT 'Table3' SELECT * FROM table3
   END CASE
Run Code Online (Sandbox Code Playgroud)

TLi*_*ebe 5

在T-Sql(MS SQL Server)中,您可以动态地编写SQL语句,然后使用sp_executesql方法执行它。根据您的case语句,您可以使用变量构建SELECT语句,然后使用sp_executesql运行它。需要注意的一件事是,如果直接使用用户文本来防止SQL注入攻击,则需要确保清除用户提供的所有输入。

例如,

DECLARE @sql NVARCHAR(200)

SELECT @sql = CASE @tableToUse
    WHEN 'Table1' THEN 'SELECT * FROM Table1'
    WHEN 'Table2' THEN 'SELECT * FROM Table2'
    ELSE 'Table3' THEN 'SELECT * FROM Table2'
    END

EXECUTE sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)

您应该能够在其他版本的SQL中执行类似的操作。


小智 5

嗯,这是旧的,但如果它有帮助:

CASE WHEN <Variabe> THEN (SELECT <Column> FROM <Table>) END
Run Code Online (Sandbox Code Playgroud)