【Hive SQL】字符串操作函数你真的会用吗?

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文介绍了SQL中判断字符串是否包含子串的几种方法。`IN`函数判断元素是否完全等于给定元素组中的某项,而非包含关系。`INSTR`和`LOCATE`函数返回子串在字符串中首次出现的位置,用于检测是否存在子串。`SUBSTR`则用于提取字符串的子串。`LIKE`用于模糊匹配,常与通配符配合使用。注意`IN`并非用于判断子串包含。

@[toc]

前言:

今天在做一个需求的时候,需要判断字符串中是否包含一个子串,然后我发现了我平常没注意到的一个点,通过这篇博文来记录一下。

IN

IN 函数用于判断一个元素是否存在于所给的元素组中,如果存在则返回 true不存在则返回 false

例如:

SELECT 'a' IN('a','b','c');
-- true

image.png

所给的元素组需要用小括号引用。

当我在使用 IN 函数的时候犯了一个错误,如下所示:

SELECT 'a' IN('aaa');
-- false

image.png

我下意识的认为 IN 函数是判断 a 是否存在于字符串 aaa 中,故误认为返回结果是 true,之前用好像也没毛病,但往往就容易在这种小细节上犯错。

一定要注意,IN 函数是判断某个元素是否【完全等于】所给元素组中的某项内容,而不是包含!!!

INSTR

INSTR(str, substr):返回子串 substr 在字符串 str第一次出现的位置,如果未找到,则返回 0

例如:

SELECT INSTR('Hello,World', 'World'); 
-- 7

SELECT INSTR('Hello,World Hello,World2', 'World'); 
-- 7

应用场景:常常用于判断字符串中是否包含给定子串。

SUBSTR

SUBSTR(str, pos, len):返回字符串 str 中从位置 pos 开始的长度为 len 的子串。

例如:

SELECT SUBSTR('Hello,World', 7, 5); 
-- World

应用场景:获取字符串中的子串。

LOCATE

LOCATE(substr, str):返回子串 substr 在字符串 str第一次出现的位置,如果未找到,则返回 0LOCATEINSTR 的同义词,区别是 LOCATE 子串在前,而 INSTR 是字符串在前。

例如:

SELECT LOCATE('World','Hello,World'); 
-- 7

SELECT LOCATE('World','Hello,World Hello,World2'); 
-- 7

应用场景:常常用于判断字符串中是否包含给定子串。

LIKE

LIKE:用于模糊匹配字符串,通常与通配符 %_ 一起使用,但不是严格的子串查找函数。

例如:

SELECT 'Hello,World' LIKE '%World%'; 
-- true

SELECT 'Hello,World Hello,World2' LIKE '%World%'; 
-- true

应用场景:用于匹配字符串中包含特定子串的情况。

相关文章
|
5月前
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != ''`与`name != null and name != ' '`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
643 0
|
1月前
|
SQL 人工智能 数据挖掘
如何在`score`表中正确使用`COUNT`和`AVG`函数?SQL聚合函数COUNT与AVG使用指南
本文三桥君通过score表实例解析SQL聚合函数COUNT和AVG的常见用法。详解COUNT(studentNo)、COUNT(score)、COUNT()的区别,以及AVG函数对数值/字符型字段的不同处理,特别指出AVG()是无效语法。实战部分提供6个典型查询案例及结果,包含创建表、插入数据的完整SQL代码。产品专家三桥君强调正确理解函数特性(如空值处理、字段类型限制)对数据分析的重要性,帮助开发者避免常见误区,提升查询效率。
138 0
|
6月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
189 4
|
11月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
154 3
|
11月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
11月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
2038 5
|
11月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
165 4
|
11月前
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
262 3
|
11月前
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
131 2
|
SQL JavaScript 前端开发
Hive根据用户自定义函数、reflect函数和窗口分析函数
Hive根据用户自定义函数、reflect函数和窗口分析函数
190 6