对于复杂的业务场景,代码与SQL都可以去实现一个场景。如果用代码去实现看起来代码会冗余,不高效,不如sql的效率与简洁。
1.Case when 数据库中的if else
pgsql与mysql中case when用法几乎一致。在SQL中,“Case When”语句用于选择判断,在执行时先对条件进行判断,然后根据判断结果做出相应的操作;语法“CASE 字段 WHEN 条件1 THEN 操作1 WHEN 条件2 THEN 操作2…ELSE 操作 END;结束”。
case when类似于编程语言中的if else判断、switch case语句。该语句执行时先对条件进行判断,然后根据判断结果做出相应的操作。
Case具有两种格式:简单Case函数和Case搜索函数。
简单case函数:
case sex
when '1' then '男'
when '0' then '女'
else '其他' end;
case搜索函数
case
when sex = '1' then '男'
when sex = '0' then '女'
else '其他' end;
显然,简单Case函数胜在简洁,但是它只适用于这种单字段的单值比较,而Case搜索函数的优点在于适用于所有比较的情况。
**注意:**还有一个需要注意的问题,Case函数在满足了某个符合条件后,剩下的条件将会被自动忽略,因此,即使满足多个条件,执行过程中也只认第一个条件。
2.POSITION()用法,相当于java中contains
postgresql中position函数提供从头查找返回第一个匹配到字符串的下标。
用法也非常简单,意思是前面的值在后面的值中包含,如果>0,则说明包含,等于0则不包含
POSITION()函数返回一个整数,该整数表示子字符串在字符串中的位置.如果在字符串中未找到子字符串,则POSITION()函数将返回零(0)。如果子字符串或字符串参数为null,则返回null。文章来源:https://www.toymoban.com/news/detail-448635.html
select position('a' in 'abc')
-- 结果:1
Case when 与Position两种一起用
select
case when position('a' in 'abc') > 0 then '包含'
else '不包含' end as name
-- 结果:包含
在复杂的场景中,可以将“abc”直接换成某一个字段,进行对比判断是否包含,输出所满足条件的值即可。文章来源地址https://www.toymoban.com/news/detail-448635.html
select
a.coupon_name__c as couponName,-- 券名
case
when position('普卡' in a.coupon_name__c) > 0 then '普卡会员'
when position('银卡' in a.coupon_name__c) > 0 then '银卡会员'
when position('白金' in a.coupon_name__c) > 0 then '白金卡会员'
when position('金卡' in a.coupon_name__c) > 0 then '金卡会员'
else '' end as name
from tab1
到了这里,关于PostgreSQL中case when与position包含用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!