MySQL中的动态Where子句

MySQL中的动态Where子句,mysql,sql,Mysql,Sql,是否可以在存储过程中构建动态where子句,以便在参数为空时选择表中的所有项?但是,如果您确实有一个参数,您可以选择条件为真的项目?这里是技巧。。。您可以创建一个字符串查询 ,然后通过条件语句对其进行操作。。见下面的示例。。希望你能在工作中运用逻辑 -- Put a default value `NULL` to your parameter first CREATE TABLE TableNameHere ( @ParameterName VARCHAR(

是否可以在存储过程中构建动态where子句,以便在参数为空时选择表中的所有项?但是,如果您确实有一个参数,您可以选择条件为真的项目?

这里是技巧。。。您可以创建一个字符串查询 ,然后通过条件语句对其进行操作。。见下面的示例。。希望你能在工作中运用逻辑

    -- Put a default value `NULL` to your parameter first
    CREATE TABLE TableNameHere 
    (
      @ParameterName VARCHAR(MAX) = NULL
    )

    DECLARE @SQLQuery VARCHAR(MAX)

    --Initialize SQL statement first
    --It will return true always , therefor it will display all data
    SET @SQLQuery = 'SELECT * FROM TableNameHere WHERE 1 = 1' 

    -- If parameter has a value then do the where condition inside the block
    IF @ParameterName IS NOT NULL
        BEGIN
           SET @SQLQuery = @SQLQuery + ' AND ColumnNameHere = ''' + @ParameterName + ''''
        END

    EXEC(@SQLQuery)

WHERE(@parameter为NULL或col=@parameter)
您可以动态执行,也可以使用一个简单的
WHERE
子句:
WHERE(@id为NULL或id=@id)
。如果我有一个名为test的过程,并且我想选择all,我会调用test(NULL)吗?如果我调用test(),它会说参数数不正确