更新时间:2024-06-29 GMT+08:00

二进制字符串函数和操作符

SQL定义了一些二进制字符串函数,这些函数使用关键字而不是逗号来分隔参数。另外,DWS提供了函数调用所使用的常用语法。

octet_length(string)

描述:二进制字符串中的字节数。

返回值类型:integer

示例:

1
2
3
4
5
SELECT octet_length(E'jo\\000se'::bytea) AS RESULT;
 result
--------
      5
(1 row)

overlay(string placing string from int [for int])

描述:替换子串。

返回值类型:bytea

示例:

1
2
3
4
5
SELECT overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) AS RESULT;
     result     
----------------
 \x5402036d6173
(1 row)

position(substring in string)

描述:特定子字符串的位置。

返回值类型:integer

示例:

1
2
3
4
5
SELECT position(E'\\000om'::bytea in E'Th\\000omas'::bytea) AS RESULT;
 result
--------
      3
(1 row)

substring(string [from int] [for int])

描述:截取子串。

返回值类型:bytea

示例:

1
2
3
4
5
SELECT substring(E'Th\\000omas'::bytea from 2 for 3) AS RESULT; 
  result  
----------
 \x68006f
(1 row)

截取时间,获取小时数:

1
2
3
4
5
SELECT substring('2022-07-18 24:38:15',12,2)AS RESULT;
 result
-----------
 24
(1 row)

trim([both] bytes from string)

描述:从string的开头和结尾删除只包含bytes中字节的最长字符串。

返回值类型:bytea

示例:

1
2
3
4
5
SELECT trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) AS RESULT;
  result  
----------
 \x546f6d
(1 row)

substring_index(string, delim, count)

描述:按照区分大小写匹配查找delimiter分隔符,返回string字符串中第count次出现delim分隔符之前的子串。若count为负数,则从末尾向前查找delim分隔符。若参数含有NULL值,返回NULL。该函数仅8.2.0及以上集群版本支持。

返回值类型:text

示例:按照区分大小写匹配查找delimiter分隔符".wWw.",返回string字符串"www.wWw.cloud.wWw.com"中第2次出现delimiter分隔符之前的子串"www.wWw.cloud"。

1
2
3
4
5
SELECT SUBSTRING_INDEX('www.wWw.cloud.wWw.com', '.wWw.', 2) AS RESULT;
    result
---------------
 www.wWw.cloud
(1 row)

btrim(string bytea,bytes bytea)

描述:从string的开头和结尾删除只包含bytes中字节的最长的字符串。

返回值类型:bytea

示例:

1
2
3
4
5
SELECT btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) AS RESULT;
   result   
------------
 \x7472696d
(1 row)

get_bit(string, offset)

描述:从字符串中抽取位。

返回值类型:integer

示例:

1
2
3
4
5
SELECT get_bit(E'Th\\000omas'::bytea, 45) AS RESULT; 
 result
--------
      1
(1 row)

get_byte(string, offset)

描述:从字符串中抽取字节。

返回值类型:integer

示例:

1
2
3
4
5
SELECT get_byte(E'Th\\000omas'::bytea, 4) AS RESULT; 
 result
--------
    109
(1 row)

set_bit(string,offset, newvalue)

描述:设置字符串中的位。

返回值类型:bytea

示例:

1
2
3
4
5
SELECT set_bit(E'Th\\000omas'::bytea, 45, 0) AS RESULT; 
      result      
------------------
 \x5468006f6d4173
(1 row)

set_byte(string,offset, newvalue)

描述:设置字符串中的字节。

返回值类型:bytea

示例:

1
2
3
4
5
SELECT set_byte(E'Th\\000omas'::bytea, 4, 64) AS RESULT; 
      result      
------------------
 \x5468006f406173
(1 row)