mysql - 如果值为空或不为两个新值,则在 SQL 中赋值

标签 mysql sql

我正在尝试找到一种方法来根据变量的状态在查询中赋值。例如使用 COALESCE 命令,但我需要它如下所示。

  1. 如果 null 分配 a,否则分配 b。

EX: COALESCE(valToCheck, a, b)

有这样的功能吗?我在网上找不到任何关于它的信息。目前正在这一行中使用:

select distinct a.right_id, COALESCE(b.right_id, '0', '1') this_bit
from app_right a, (
                   select rol.app_role_id
                       ,rol.app_parent_id
                       ,rol.right_id 
                   from app_role rol 
                  where rol.application_id = @APP_ID
                 ) b
            CONNECT BY ( select b.app_role_id from app_user a
                 ,app_user_right_xref b 
             where a.user_id = b.user_id 
             and a.sec_user = p_sec_user)

最佳答案

您可以使用 CASE 语句:

select distinct 
    a.right_id,
    CASE WHEN b.right_id IS NULL THEN 0 ELSE 1 END AS this_bit

请注意,如果您真的想要一点,您应该使用CAST:

select distinct 
    a.right_id,
    CAST(CASE WHEN b.right_id IS NULL THEN 0 ELSE 1 END AS BIT) AS this_bit

关于mysql - 如果值为空或不为两个新值,则在 SQL 中赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736774/

相关文章:

Mysql 数据库设计与用户、组团队等

mysql - 创建程序

mysql - PHPMyAdmin:MyISAM 中的多对多关系(不支持外键)

MySQL 对字符串执行数学运算?

sql - 从日期中减去一个月但确保它是该月的第一个工作日

MySQL:组函数的使用无效

mysql - 使用带有数字查找的 having 子句

mysql - SQL 语句读取 mySQL 数据库中 >1000 个值

mysql删除操作

mysql - SQL查询: Indicate if a row had a value of 0