字符串函数 1)字符串拼接:|| 2)字符串长度:length 3)字符串截取:substring('fsfd' from 2 for 3)、substr('fsfd',2,3) 4)字符串两头去字符:trim(' fsf')、trim(both 'x' from 'xfdsx') 5)大小写转换:upper()、lower() 6)替换字符串:replae('fsfsfsf',fs'','ab') 7)把字符串中某几个连续字符替换成指定字符:overlay('freda' placing 'fsf' from 2 for 4) 8)按照某个字符拆分字符串:split_part('adas|dada|ffr','|',2) 9)手动数据:select * from (values ('a1',3),('a2',4)) t(col,num) 10)指定字符串在字符串中的起始位置:position('as' in 'dadassa') 根据提供的Greenplum文档标题“greenplum常用命令”及其描述,本文将详细介绍Greenplum数据库中关于字符串处理以及日期时间操作的相关知识点。这些知识点包括常见的字符串函数与日期时间函数,旨在帮助用户更好地理解和掌握如何在Greenplum环境中进行数据处理。 ### 字符串函数 #### 1. 字符串拼接:`||` 使用双竖线 `||` 来拼接两个或多个字符串。例如: ```sql SELECT 'Hello' || ' ' || 'World'; -- 返回 "Hello World" ``` #### 2. 字符串长度:`length` `length` 函数返回给定字符串的长度。 ```sql SELECT length('fsfd'); -- 返回 4 ``` #### 3. 字符串截取:`substring`, `substr` 使用 `substring` 或 `substr` 函数来截取字符串的一部分。 - `substring` 的语法为 `substring(source_string from start_position for length)`; - `substr` 的语法为 `substr(source_string, start_position, length)`; ```sql SELECT substring('fsfd' from 2 for 3); -- 返回 "sfd" SELECT substr('fsfd', 2, 3); -- 同样返回 "sfd" ``` #### 4. 字符串两头去字符:`trim` `trim` 函数用于移除字符串首尾的指定字符。 - `trim` 可以没有参数,此时默认移除空白字符; - `trim(leading|trailing|both 'char' from string)` 允许指定要移除的字符及移除的位置。 ```sql SELECT trim(' fsf'); -- 返回 "fsf" SELECT trim(both 'x' from 'xfdsx'); -- 返回 "fds" ``` #### 5. 大小写转换:`upper`, `lower` `upper` 和 `lower` 分别用于将字符串转换为全大写或全小写形式。 ```sql SELECT upper('hello'); -- 返回 "HELLO" SELECT lower('WORLD'); -- 返回 "world" ``` #### 6. 替换字符串:`replace` `replace` 函数可以替换字符串中的指定部分。 ```sql SELECT replace('fsfsfsf', 'fs', 'ab'); -- 返回 "abababab" ``` #### 7. 把字符串中某几个连续字符替换成指定字符:`overlay` `overlay` 函数用于将一个字符串中指定范围内的字符替换为另一个字符串。 ```sql SELECT overlay('freda' placing 'fsf' from 2 for 4); -- 返回 "frfsfa" ``` #### 8. 按照某个字符拆分字符串:`split_part` `split_part` 函数按照指定分隔符将字符串拆分为多个部分,并返回指定的部分。 ```sql SELECT split_part('adas|dada|ffr', '|', 2); -- 返回 "dada" ``` #### 9. 手动数据:`select * from (values()) as t` 使用 `values` 子句可以手动插入行数据。 ```sql SELECT * FROM (VALUES ('a1', 3), ('a2', 4)) AS t(col, num); ``` #### 10. 指定字符串在字符串中的起始位置:`position` `position` 函数返回子字符串在主字符串中的起始位置。 ```sql SELECT position('as' in 'dadassa'); -- 返回 4 ``` ### 日期时间函数 #### 1. 计算两个日期之间的时间差:`age` `age` 函数计算两个日期之间的间隔。 ```sql SELECT age(timestamp '2017-10-18'); SELECT age(timestamp '2017-10-18', timestamp '2017-10-08'); ``` #### 2. 当前日期:`current_date` `current_date` 返回当前日期。 ```sql SELECT current_date; ``` #### 3. 当前时间和当前时间戳:`current_time`, `current_timestamp` `current_time` 返回当前时间,`current_timestamp` 返回当前日期和时间。 ```sql SELECT current_time; SELECT current_timestamp; ``` #### 4. 提取日期时间的特定部分:`date_part` `date_part` 函数用于提取日期时间字段。 ```sql SELECT date_part('year', timestamp '2017-10-19 09:26:24'); SELECT date_part('month', timestamp '2017-10-19 09:26:24'); SELECT date_part('week', timestamp '2017-10-19 09:26:24'); SELECT date_part('day', timestamp '2017-10-19 09:26:24'); SELECT date_part('hour', timestamp '2017-10-19 09:26:24'); SELECT date_part('minute', timestamp '2017-10-19 09:26:24'); SELECT date_part('second', timestamp '2017-10-19 09:26:24'); ``` #### 5. 获取日期时间字段的特定部分:`date_trunc` `date_trunc` 函数返回日期时间字段的特定部分。 ```sql SELECT date_trunc('year', timestamp '2017-10-19 09:26:24'); SELECT date_trunc('month', timestamp '2017-10-19 09:26:24'); SELECT date_trunc('week', timestamp '2017-10-19 09:26:24'); SELECT date_trunc('day', timestamp '2017-10-19 09:26:24'); SELECT date_trunc('hour', timestamp '2017-10-19 09:26:24'); SELECT date_trunc('minute', timestamp '2017-10-19 09:26:24'); SELECT date_trunc('second', timestamp '2017-10-19 09:26:24'); ``` #### 6. 与 `date_part` 相同的功能:`extract` `extract` 函数也可以用于提取日期时间字段。 ```sql SELECT extract(year from timestamp '2017-10-19 09:26:24'); ``` #### 7. 与 `current_timestamp` 相同的功能:`now` `now` 函数返回当前日期和时间。 ```sql SELECT now(); ``` #### 8. 转换日期时间:`date` `date` 函数用于转换日期时间格式。 ```sql SELECT date '20171018'; SELECT '20171018'::date; SELECT '20171018'::timestamp; SELECT timestamp '20171018'; ``` #### 9. 日期加减运算 使用 `date` 和 `interval` 进行日期加减运算。 ```sql SELECT date '20171018' - 18; SELECT date(date '20171018') - interval '18 days'; SELECT date '20171018' - interval '1 day 2 hours 20 minutes 30 seconds'; ``` ### 数学函数 #### 1. 绝对值:`abs` `abs` 函数返回数值的绝对值。 ```sql SELECT abs(-12); ``` #### 2. 向上取整:`ceil`, `ceiling` `ceil` 和 `ceiling` 函数返回大于或等于给定数字的最小整数。 ```sql SELECT ceil(-42.8); SELECT ceiling(-42.8); ``` #### 3. 四舍五入:`round` `round` 函数返回按指定小数位数四舍五入后的值。 ```sql SELECT round(43.545345, 2); ``` #### 4. 随机数:`random` `random` 函数返回 0 到 1 之间的随机数。 ```sql SELECT random(); ``` #### 5. 去除小数部分:`trunc` `trunc` 函数返回去掉小数部分后的整数。 ```sql SELECT trunc(43.545, 2); ``` ### 数据生成和聚合函数 #### 1. 生成一系列数据:`generate_series` `generate_series` 函数可以生成一系列连续的数据。 ```sql SELECT generate_series(6, 10, 1); ``` #### 2. 聚合函数:`string_agg` `string_agg` 函数将一组值聚合为一个字符串,并用指定的分隔符连接。 ```sql SELECT num, string_agg(col, ',' ORDER BY num) FROM (VALUES (1, 'a1'), (1, 'a2'), (2, 'b1'), (2, 'b2')) t(num, col) GROUP BY num; ``` #### 3. 字符串分割:`regexp_split_to_table` `regexp_split_to_table` 函数可以按照正则表达式来分割字符串。 ```sql SELECT regexp_split_to_table(col, ',') FROM (VALUES ('a2,a1')) t(col); ``` ### 密码哈希函数 #### 1. MD5 哈希:`md5` `md5` 函数可以生成一个字符串的 MD5 哈希值。 ```sql SELECT md5('fsfds'); ``` ### 显示编码设置 #### 1. 显示客户端编码:`show client_encoding` `show client_encoding` 命令显示客户端的字符编码设置。 ```sql SHOW client_encoding; ``` #### 2. 显示服务器端编码:`show server_encoding` `show server_encoding` 命令显示服务器端的字符编码设置。 ```sql SHOW server_encoding; ``` ### 数据格式化 #### 1. 格式化日期时间:`to_char` `to_char` 函数用于格式化日期时间。 ```sql SELECT to_char(now(), 'YYYYMMDDHH24MISS'); ``` #### 2. 解析日期时间:`to_date` `to_date` 函数用于解析日期时间字符串。 ```sql SELECT to_date(now(), 'YYYYMMDD'); ``` 通过以上介绍,我们可以看到Greenplum数据库提供了丰富的字符串函数和日期时间函数,可以帮助用户高效地处理数据。熟练掌握这些函数将极大地提高数据分析工作的效率。
- 粉丝: 7
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助