PostgreSQL中case when与position包含用法

news/2024/7/9 19:43:33 标签: 数据库, sql, postgresql, position, casewhen

对于复杂的业务场景,代码与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函数:

sql">case sex
when '1' then '男'
when '0' then '女'
else '其他' end;

case搜索函数

sql">case 
when sex = '1' then '男'
when sex = '0' then '女'
else '其他' end;

显然,简单Case函数胜在简洁,但是它只适用于这种单字段的单值比较,而Case搜索函数的优点在于适用于所有比较的情况。
**注意:**还有一个需要注意的问题,Case函数在满足了某个符合条件后,剩下的条件将会被自动忽略,因此,即使满足多个条件,执行过程中也只认第一个条件。

2.POSITION()用法,相当于java中contains

postgresqlposition函数提供从头查找返回第一个匹配到字符串的下标。
用法也非常简单,意思是前面的值在后面的值中包含,如果>0,则说明包含,等于0则不包含

POSITION()函数返回一个整数,该整数表示子字符串在字符串中的位置.如果在字符串中未找到子字符串,则POSITION()函数将返回零(0)。如果子字符串或字符串参数为null,则返回null。

sql">select position('a' in 'abc')
-- 结果:1

Case when 与Position两种一起用

sql">select 
case when position('a' in 'abc') > 0 then '包含'
else '不包含' end as name
-- 结果:包含

在复杂的场景中,可以将“abc”直接换成某一个字段,进行对比判断是否包含,输出所满足条件的值即可。

sql">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

http://www.niftyadmin.cn/n/343563.html

相关文章

使用 options 属性来控制屏幕顶部的导航栏

在 React Navigation 6 中,你可以通过使用 options 属性来控制屏幕顶部的导航栏。 在你的屏幕组件中,你可以通过在 options 属性中设置不同的值来控制导航栏的显示、标题等。 以下是一个示例,展示如何在屏幕组件中控制导航栏的显示和自定义…

详解等级保护流程:步骤图示、模拟练习教你如何评估、控制和验证等保工作。

数据来源:ChatGPT 等级保护,是一种信息安全管理的制度,分为4个级别,针对等级的不同,采取不同的防护措施和技术控制手段,确保其信息系统充分适应现实风险情况。 以下对等级保护流程进行简述: 等…

centos 8 安装 jdk8

去官网下载RPM软件包 下载地址:https://www.oracle.com/java/technologies/downloads/#java8 上传到服务器指定路径,进行安装 rpm -ivh jdk-8u371-linux-x64.rpm 配置JAVA_HOME环境变量 查找jdk安装路径 java -verbose修改系统环境变量文件 vi /e…

chatgpt赋能Python-pythonfind

Python文件搜索工具Pythonfind 在开发过程中,文件搜索工具是一个非常重要的工具。在大型项目中,可能需要查找特定类型的文件或者在代码库中查找特定的代码块。 Pythonfind是一个非常强大和灵活的python文件搜索工具,可以帮助我们简化这个过程…

芯片设计全流程知识点总结

1、低功耗工具 功耗分析预测分析工具包括PowerArtist(Ansys)、Spyglass Power(Synopsys)、Prime Time PX(Synopsys)和Redhawk(Ansys)等。通过对实际项目中;不同工具的比…

chatgpt赋能Python-python5个数从小到大排序

Python中的5个数从小到大排序 在Python中,排序是一个常见的操作。我们经常需要对一组数据进行排序,以便更方便地对数据进行分析和处理。在本文中,我们将探讨Python中如何排序5个数,具体来说,是从小到大排序。 介绍 …

Unity之OpenXR+XR Interaction Toolkit示例Demo详解

一.前言 自从升级Unity版本到2021,然后使用OpenXR开发VR之后,我们整个团队的开发效率都提升了不少,这证明了不管什么领域,统一接口,统一规范都是必须的。 关于XR Interaction Toolkit插件,我已经写了几篇文章了,今天才想起来,最基础的Demo讲解还没有写,其实官方的这个…

操作系统(持续更新)

操作系统的定义 操作系统(operating system,OS)是配置在计算机硬件上的第一层软件,是对硬 件系统的首次扩充,其主要作用是管理硬件设备,提高它们的利用率和系统吞吐量,并为 用户和应用程序提供一…