PostgreSQL【SQL 01】根据条件更新字段值或追加信息STRPOS(string, substring)函数使用及LIKE函数对比

简介: PostgreSQL【SQL 01】根据条件更新字段值或追加信息STRPOS(string, substring)函数使用及LIKE函数对比

1.需求说明

项目中有这样一个需求,根据条件标记数据,需要完成的内容如下:

  1. 对符合条件的数据进行标记;
  2. 无值则使用标记值;
  3. 有值则判断是否包含当前标记,包含则不处理,不包含则追加。

2.SQL编程

话不多说,上SQL:

UPDATE targetTableName 
SET targetField =
CASE    
    WHEN targetField IS NULL THEN #{ targetValue } 
    WHEN STRPOS ( targetField, #{ targetValue } ) = 0 THEN CONCAT ( targetField, ',', #{ targetValue } ) 
    ELSE targetField 
  END 
WHERE
  whereConditionStatement

这里进行一些说明:

  1. 为什么需要判断IS NULL
SELECT STRPOS( NULL, 'g' )
-- 结果是(Null)

如果标记字段为空,使用STRPOS函数就没有返回值,而CASE WHEN需要一个布尔值。

  1. STRPOS函数
SELECT STRPOS( 'abcdefg', 'a' ) 
-- 结果是 1
SELECT STRPOS( 'abcdefg', 'g' ) 
-- 结果是 7
SELECT STRPOS( 'abcdefg', 'h' ) 
-- 结果是 0
  1. ELSE必须要有值

这个是个坑😢如果不写ELSE语句,前两个条件不符合时,标记字段的值将被设置为null。

3.总结

话说为什么不用LIKE呢?

SELECT NULL LIKE '%a%'
-- 结果也是 (Null)
SELECT 'abcdefg' LIKE '%a%'
-- 结果是 t

实际上是可以使用的,只不过要对#{targetValue}拼接%。

-- 以下为MySQL语法(两种方式都是可以使用到索引的)
SELECT COUNT( 1 ) FROM dataTableName WHERE field LIKE 'str';
SELECT COUNT( 1 ) FROM dataTableName WHERE INSTR(field , '%str%') > 0;
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
SQL 人工智能 数据挖掘
如何在`score`表中正确使用`COUNT`和`AVG`函数?SQL聚合函数COUNT与AVG使用指南
本文三桥君通过score表实例解析SQL聚合函数COUNT和AVG的常见用法。详解COUNT(studentNo)、COUNT(score)、COUNT()的区别,以及AVG函数对数值/字符型字段的不同处理,特别指出AVG()是无效语法。实战部分提供6个典型查询案例及结果,包含创建表、插入数据的完整SQL代码。产品专家三桥君强调正确理解函数特性(如空值处理、字段类型限制)对数据分析的重要性,帮助开发者避免常见误区,提升查询效率。
639 0
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
497 3
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
3253 5
|
SQL 关系型数据库 数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言
部分 II. SQL 语言 这部份描述在PostgreSQL中SQL语言的使用。我们从描述SQL的一般语法开始,然后解释如何创建保存数据的结构、如何填充数据库以及如何查询它。中间的部分列出了在SQL命令中可用的数据类型和函数。
1365 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
1073 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
795 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
476 6
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1587 3

推荐镜像

更多