MySQL CASE/REPLACE/EXISTS函数使用范例

来源:互联网 发布:知乐全集未删节txt下载 编辑:程序博客网 时间:2024/05/16 06:21

背景:

在用户管理模块中,当Add User以及Update User时,因为对User的权限进行了设置,需要相应的更新User所属公司的权限配置。为了编码简单,所以最后使用了一个比较复杂的SQL来进行实现。

 

表介绍:

account表——记录公司信息

user_r表——记录公司下的User帐号信息

两张表通过列ACCOUNTNUMBER进行关联

 

SQL语句:

UPDATE account SET UFK_PERMISSION = REPLACE(REPLACE((CASE WHEN UFK_PERMISSION IS NULL THEN 'E1G1' ELSE UFK_PERMISSION END), 'E0', 'E1'), 'G0', 'G1') WHERE ACCOUNTNUMBER ='" + AccountNumber + "' AND EXISTS(SELECT user_r.* FROM user_r WHERE user_r.ACCOUNTNUMBER=account.ACCOUNTNUMBER AND user_r.TREATISE LIKE '%M1%N1%P1%');

 

要点说明:

A) CASE WHEN UFK_PERMISSION IS NULL THEN 'E1G1' ELSE UFK_PERMISSION END,类似Java的三元表达式——当UFK_PERMISSION为空时,结果为'E1G1',否则结果就是UFK_PERMISSION的内容。
B) REPLACE函数,三个参数:str1/str2/str3——对于str1,将时其中的str2替换为str3
C) EXISTS函数,判断括号中的子查询是否存在查询记录

 

以上SQL语句在MySQL中通过测试

原创粉丝点击