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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 本文介绍了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

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

相关文章
|
22天前
|
SQL HIVE
【Hive SQL 每日一题】环比增长率、环比增长率、复合增长率
该文介绍了环比增长率、同比增长率和复合增长率的概念及计算公式,并提供了SQL代码示例来计算商品的月度增长率。环比增长率是相邻两期数据的增长率,同比增长率是与去年同期相比的增长率,复合增长率则是连续时间段内平均增长的速率。文章还包含了一组销售数据用于演示如何运用这些增长率进行计算。
|
19天前
|
SQL HIVE
hive高频函数(一)
hive高频函数(一)
18 0
|
10天前
|
SQL 存储 关系型数据库
PolarDB产品使用合集之有的sql里面有自定义存储函数 如果想走列存有什么优化建议吗
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
|
10天前
|
SQL 存储 关系型数据库
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)二
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)二
20 0
|
10天前
|
SQL 关系型数据库 MySQL
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
22 5
|
19天前
|
SQL Java 程序员
Hive反射函数的使用-程序员是怎么学UDF函数的
Hive反射函数的使用-程序员是怎么学UDF函数的
5 0
|
19天前
|
SQL HIVE 数据格式
Hive高频函数(二)
Hive高频函数(二)
19 0
|
22天前
|
SQL 分布式计算 HIVE
Hive Cli / HiveServer2 中使用 dayofweek 函数引发的BUG!
在Hive 3.1.2和Spark 3.0.2集群环境中,遇到`dayofweek`函数bug。当`create_date`为字符串类型时,`dayofweek`函数结果错位。修复方法是将`create_date`转换为`date`类型。在Spark SQL中,原始代码能正常运行,未出现此问题。因此建议在Hive中使用转换后的日期类型以避免错误。
|
22天前
|
SQL HIVE
【Hive SQL 每日一题】统计用户连续下单的日期区间
该SQL代码用于统计用户连续下单的日期区间。首先按`user_id`和`order_date`分组并去除重复,然后使用`row_number()`标记行号,并通过`date_sub`与行号计算潜在的连续日期。接着按用户ID和计算后的日期分组,排除连续订单数少于2的情况,最后提取连续下单的起始和结束日期。输出结果展示了用户连续下单的日期范围。
|
SQL
SQL点滴33—SQL中的字符串操作
原文:SQL点滴33—SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大、小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 sele...
830 0

热门文章

最新文章