WHERE子句中的动态条件

Kel*_*ish 4 t-sql dynamic where conditional-statements

我有一个存储过程,并想知道是否可以where基于参数建立动态条件.

让我说我有这个问题:

SELECT *
FROM tbl_Users
Run Code Online (Sandbox Code Playgroud)

现在,我有一个名为的参数@username,我想用它来建立一个动态where条件(通过我的程序可能是一个或多个条件).为了达到这样的目的,我使用以下语句:

SELECT *
FROM tbl_Users
@username -- where this parameter might hold a condition string such as "Where usr_Username = 5 and usr_first_name like '%Frank%' etc
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

Jon*_*ton 5

你将不得不为此打破动态sql.

它会运行这样的事情:

declare @sql varchar(max)

set @sql = '
    SELECT *
    FROM tbl_Users
    WHERE ' + @username

exec (@sql)
Run Code Online (Sandbox Code Playgroud)