mysql - MySQL 中的动态Where 子句

标签 mysql sql

是否可以在存储过程中构建动态 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)

关于mysql - MySQL 中的动态Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32834822/

相关文章:

php - 此查询是否获取不必要的信息?我应该更改查询吗?

sql - 识别两个表之间差异的最快方法?

sql - 如何选择前一行值?

SQL Server ORDER BY/WHERE 与嵌套选择

php - 从 mySQL 查询中删除未找到的单词

mysql - 将子查询中带有 LIMIT 的 SQL 查询转换为 Hibernate

mysql - 如何从与外键链接的两个表中选择不同的行

java - Android Studio JDBC MySQL

mysql - 如何级联删除父表行

mysql - 如何连接不同表中的多行和单行