文档

SQL语句示例

更新时间:

本文介绍SQL分析任务中常用函数的SQL语句示例。

SQL分析任务中支持函数的具体说明,请参见SQL分析任务支持的函数

时间和日期使用示例

函数名

操作目的

SQL语句示例

to_timestamp()

按时间戳转换日期。

SELECT to_timestamp(1632802961000/1000)
FROM T1;

to_date()

将字符串转换为日期。

SELECT to_date('05 Dec 2000', 'DD Mon YYYY');
SELECT to_date('2001 03 24', 'YYYYMMDD');

to_timestamp()

将字符串转换为时间戳。

SELECT to_timestamp(a, 'YYYYMMDD') FROM T1;

date + integer

从指定日期开始向前加7天,返回日期类型。

SELECT date '2001-09-28' + integer '7';

current_date

当前日期向前加3天,返回日期类型。

SELECT current_date+ integer '3 ';

to_char()

当前时间向前加1天,返回日期类型。

SELECT to_char(current_date+ interval '1 day','yyyy-mm-dd');

date + time

从指定日期开始向前加3个小时(00:00开始计算),返回timestamp类型。

SELECT date '2001-09-28' + time '03:00';

date + interval

从指定日期开始向前加1个小时(00:00开始计算),返回timestamp类型。

SELECT date '2001-09-28' + interval '1 hour';

now()+interval

当前时间向前加1天、1个月或2年,返回timestamptz类型。

SELECT now()+interval '1 day/1 month/2 year';

date - date

指定日期相减。

SELECT date '2001-10-01' - date '2001-09-28';

extract()

获取指定日期的小时或分钟数。

SELECT extract(hour from timestamp '2001-02-16 20:38:40');
SELECT extract(minute from now());
SELECT date_part('hour', timestamp '2001-02-16 16:38:40');

date_trunc()

截断时间。

  • 指定时间截断。

    SELECT date_trunc('month', timestamp '2001-02-16 18:38:40');
  • 每月1号的12:00。

    SELECT date_trunc('month',now()) +interval '12h';
  • 每天9:00。

    SELECT date_trunc('day',now()) + interval '9h';
  • 每周的今天。

    SELECT date_trunc('day',now()) + interval '7d';
  • 每30分钟。

    SELECT date_trunc('minute',now()) + interval '30minute';

字符串使用示例

函数名

操作目的

SQL语句示例

to_number()

转换字符串为数字。

SELECT to_number('12,454.8-', '99G999D9S')
FROM T1;

row_to_json()

将一行数据转换为JSON格式。

SELECT row_to_json(t) 
FROM (SELECT name,intrests FROM interests_test) AS t;

string_agg()

使用指定分隔符将指定表达式的非空值串联成字符串,可作为列转行使用。

SELECT string_agg(city,',') 
from T1;

string_agg()

SELECT string_agg(name,',') filter (where student_id >2) 
from T1;

regexp_split_to_table()

字符串分割函数,将分割出的数据转换成行,可作为行转列使用。

SELECT name,regexp_split_to_table(intrests, ',') 
from T1;

regexp_split_to_array()

字符串分割函数,将分割出的数据转换成数组,可作为行转数组使用。

SELECT name,regexp_split_to_array(intrests, ',') 
from T1;

replace()

字符串替换。

SELECT animal,replace(color,'白','五彩斑斓') 
FROM animal_test;

regexp_replace()

SELECT regexp_replace(a, '1234.', '77', 'ig') 
FROM a_test;

UPPER()

返回字符串大写格式。

SELECT UPPER('aaabbbccc'), LOWER('AAABBBCCC')
FROM T1;

LOWER()

返回字符串小写格式。

INITCAP()

返回首字母大写,其余字母小写的字符串。

SELECT INITCAP('aaabbbccc')
FROM T1;

CONCAT()

字符串拼接。

SELECT CONCAT('AA', 'BB', 'CC') 
FROM T1;

CONCAT_WS()

使用分隔符连接除第一个参数外的所有参数。

SELECT CONCAT_WS('~', 'AA', Null(STRING), 'BB', '', 'CC')
FROM T1;

SUBSTRING()

字符串截取。

SELECT SUBSTRING('Thomas' from 2 for 3)
FROM T1;

TRIM()

去除字符串两端字符。

SELECT TRIM(both from ' AAABBBCCC ')
FROM T1;

split_part()

使用指定的分隔符拆分字符串,并返回第n个字符串。

SELECT split_part(a, '/', 2) 
FROM T1;

条件判断使用示例

函数名

操作目的

SQL语句示例

CASE...WHEN...ELSE...END

在指定的条件表达式为TRUE时执行一组单个或多个语句。

SELECT a,
  CASE WHEN a=1 THEN 'one'            
       WHEN a=2 THEN 'two'            
       ELSE 'other'       
  END    
FROM T1;

COALESCE()

返回参数列表中第一个非空表达式的值。

SELECT a,       
      COALESCE(null, 'a', 'b')    
FROM T1;

nullif()

如果两个表达式的值相等,则结果返回NULL,反之返回第一个表达式的值。

SELECT a,       
      nullif('a','a')    
FROM T1;

greatest()

选择表达式列表中的最大值。

SELECT a,       
      greatest('a','b','c')    
FROM T1;

least()

选择表达式列表中的最小值。

SELECT a,       
      least('a','b','c')    
FROM T1;
  • 本页导读 (1)
文档反馈