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

背景:

在用户管理模块中,当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中通过测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值