1、字符串判断


函数

描述

1

coalesce(expr1, expr2, ...)

:空值处理

函数说明:返回第一个非空参数,类似ifnull(expr1, expr2),可以设置多个表达式

示例:如果处理部门为空,则填充发起部门。

2

nullif(expr1, expr2) 

等值判定为空

函数说明:如果expr1等于expr2,则返回null,否则返回expr1;

示例:

> SELECT nullif(2, 2);

NULL

3

nvl(expr1, expr2)

空值处理

函数说明:如果为null,则返回值;支持2个表达式

示例:如果处理部门为空,则填充发起部门。

4

nvl2(expr1, expr2, expr3)

:空值处理

函数说明:如果不为null,则返回值,支持3个表达式

示例:

> SELECT nvl2(NULL, 2, 1); 1

5

endswith(left, right)

:结尾判断

函数说明:返回布尔值。如果从左往右,以右侧字符串结尾,则该值为True。如果任一输入表达式为NULL,则返回NULL。否则,返回False。左边或右边都必须是STRING或BINARY类型。

示例:

> SELECT endswith('Spark SQL', 'SQL');

true

> SELECT endswith('Spark SQL', 'Spark');

false

2、字符串拼接


函数

描述

1

concat(col1, col2, ..., colN)

拼接字符串

函数说明:连接字符串col1, col2, ..., colN

示例:

> SELECT concat('Spark', 'SQL');

SparkSQL

2

concat_ws(sep,[column2],…,[columnN])
拼接字符串

函数说明:

concat_ws(“sep”,[column2],…,[columnN]):返回这N列拼接的带分隔符的字符串。

concat_ws(“sep”, str1, str2,…, strN):返回这N个字符串拼接后的字符串。

  • 参数说明
    sep:分隔符
    column1:所选列名

示例:

>SELECT concat_ws(' ', 'Spark', 'SQL');

Spark SQL

3、字符串长度


函数

描述

1

length(expr) 

:字符串长度

函数说明:返回字符串的长度

示例:

> SELECT length('Spark SQL ');

10

> SELECT length(x'537061726b2053514c');

9

2

CHAR_LENGTH(expr) 

:字符串长度

函数说明:返回字符串的长度

示例:

> SELECT CHAR_LENGTH('Spark SQL ');

10

3

CHARACTER_LENGTH(expr) 

:字符串长度

函数说明:返回字符串的长度

示例:

> SELECT CHARACTER_LENGTH('Spark SQL ');

10

4、字符串查找、截取


函数

描述

1

instr(str, substr) 

函数说明:返回从1开始的字符出现索引

示例:

> SELECT instr('SparkSQL', 'SQL');

6

2

left(str, len) 

函数说明:返回第一个 n 字符

示例:

> SELECT left('Spark SQL', 3);

Spa

> SELECT left(encode('Spark SQL', 'utf-8'), 3);

Spa

3

locate, position

函数说明:返回子字符串第一次出现的位置

示例:

4

first, first_value

函数说明:返回第一个值

示例:

5

last, last_value

函数说明:返回最后一个值

示例:

6

parse_url

函数说明:提取URL的一部分

示例:

7

repeat

函数说明:返回重复的字符串

示例:

8

lag(input[, offset[, default]]),


函数说明:返回偏移前面的值。返回窗口中当前行之前的第二行的输入值。偏移量的默认值为1,默认值为null。如果offseth行的input值为null,则返回null。如果没有这样的偏移行(例如,当偏移为1时,窗口的第一行没有任何前一行),则返回默认值。

示例:

①使用方式:LAG(A)  OVER (PARTITION BY  <B> ORDER BY <A>

②语句:SELECT `CustomerID` as `客户名称`,`OrderDate` as `订单日期`,Lag(`OrderDate` ) OVER (PARTITION BY `CustomerID` ORDER BY `OrderDate` ) AS `上次订单日期` FROM orders ;

说明:通过使用Lag函数和PARTITION BY子句,我们可以按照客户ID对订单进行分组,并计算每个分组中上一个订单的日期。这样我们可以轻松地找到每个客户上一个订单的日期。

9lead(input[, offset[, default]]),

函数说明:返回窗口中当前行之后第二行的输入值。偏移量的默认值为1,默认值为null。如果offseth行的input值为null,则返回null。如果没有这样的偏移行(例如,当偏移为1时,窗口的最后一行没有任何后续行),则返回默认值。

①使用方式:LEAD(A)  OVER (PARTITION BY  <B> ORDER BY <A>

②语句:SELECT `EmployeeID` , `DepartmentID` , `Salary` ,Lead(`Salary` ) OVER (PARTITION BY `DepartmentID` ORDER BY `Salary` ) AS NextSalary FROM Employees; ;

说明:通过使用Lead函数和PARTITION BY子句,我们可以按照部门ID对员工进行分组,并计算每个分组中下一个员工的薪水。这样我们可以轻松地找到每个部门中下一个员工的薪水。

10substring(str, pos[, len]),substr

函数说明:返回str从pos开始、长度为len的子字符串,或字节数组从pos结束、长度为len的切片。

示例:

11

substring_index

函数说明:返回子字符串的索引

示例:

12

split

函数说明:拆分字符串

示例:


5、字符串替换


函数

描述

1

regexp_extract

提取与正则表达式匹配的内容

2

regex_replace

替换匹配正则表达式的内容

3

replace

替换字符串的所有实例

4translate替换字符串中的值

6、字符串补位


函数

描述

1initcap将字符串更改为标题大小写
2lcaselower将字符串更改为全部小写
3lpad垫住字符串的左侧
4rpad将字符串的右侧填充
5rtrim删除尾随空格
6trim删除前导字符和尾随字符
7ucaseupper将字符串更改为全部大写

7、计数、排名


函数

描述

1

count

返回行的总计数

2

rank

计算值的排名

8、增加序号


函数

描述

1

row_number

分配唯一行号

2