跳到主要内容
Version: 开发者版

字符串函数

概述

支持oracle字符串函数,所有函数被创建再oracle模式下,调用这些函数时,应该把oracle模式加入SEARCH_PATH或显示的使用oracle模式。

ASCII

目的

ASCII(str)返回字符串首个字符在数据库字符集中的编码的十进制形式。

参数

str 输入参数包括以下数据类型(varchar2,int,numeric,float,date,timestamp,interval),可以隐式转换为上述类型。

示例

SELECT ascii(201912::int4) "ascii";
ascii
-------
50
(1 row)

VSIZE

目的

VSIZE(str)返回入参字符串的内部表示的字节数。

参数

str 输入参数包括任意数据类型。

示例

SELECT vsize('I 8O lIKE AlPH: a b c') "vsize";
vsize
-------
21
(1 row)

INSTRB

目的

INSTRB(str, [substr], [start], [nth])返回源字符串str中子串substr的字节位置。

参数

str 输入参数包括以下数据类型(int,numeric,float,char,text,date,timestamp,interval),可以隐式转换为上述类型。
substr 输入参数,匹配字符串。
start 开始位置。
nth 出现第nth次。

示例

SELECT instrb(20121209,12) "instrb";
instrb
--------
3
(1 row)

SELECT instrb(20121209,12, 1) "instrb";
instrb
--------
3
(1 row)

SUBSTR

目的

SUBSTR(str, start, [len])返回str从start位置开始的子串。

参数

str 输入参数包括以下数据类型(text, numeric, float, date, timestamp, interval),可以隐式转换为上述类型。
start 子串开始位置。
len 子串长度。

示例

SELECT substr(21212, 2) "substr";
substr
--------
1212
(1 row)

SELECT substr('201912', '2', '2') "substr";
substr
--------
01
(1 row)

SUBSTRB

目的

SUBSTRB(str, start, [len])返回str从start位置开始的子串,如果获取的字节数小于字符字节数,我们将不填充空格。

参数

str 输入参数包括以下数据类型(text, char, numeric, float, date, timestamp, interval),可以隐式转换为上述类型。
start 子串开始位置。
len 子串长度。

示例

SELECT substrb('201912', '2', '4') "substrb";
substrb
---------
0191
(1 row)

STRPOSB

目的

STRPOSB(str, substr)返回子串substr在str中第一次出现的位置。

参数

str 输入参数包括以下数据类型(text, char, numeric, float, date, timestamp, interval),可以隐式转换为上述类型。
substr 输入参数,匹配字符串。

示例

SELECT strposb(123456, 345) "pos in str";
pos in str
------------
3
(1 row)

LPAD

目的

LPAD(str, len, [lpad_str])从左边对str用lpad_str进行填充,使最终的长度为len。

参数

str 输入参数包括以下数据类型(char, text, numeric, float, date, timestamp, interval),可以隐式转换为上述类型。
len 字符串长度。
lpad_str 填充字符串

示列

SELECT lpad('123', '20');
lpad
----------------------
123
(1 row)

SELECT lpad(123, 20, 0);
lpad
----------------------
00000000000000000123
(1 row)

RPAD

目的

RPAD(str, len, [rpad_str])从右边对str用rpad_str进行填充,使最终的长度为len。

参数

str 输入参数包括以下数据类型(text, numeric, float, date, timestamp, interval),可以隐式转换为上述类型。
len 字符串长度。
rpad_str 填充字符串

Examples

SELECT rpad('123', '20');
rpad
----------------------
123
(1 row)

SELECT rpad(123, 20, 0);
rpad
----------------------
12300000000000000000
(1 row)

RTRIM

目的

RTRIM(str, [set])支持输入参数str从右边第一个字符开始,删除输入参数集中的字符,直到第一个不匹配的字符结束,返回剩余的字符。如果省略 set,则默认为单个空格。

参数

str 输入参数包括任意数据类型。
set 输入参数,匹配字符串。

示列

SELECT rtrim(1231232112, 21) "RTRIM Example";
RTRIM Example
---------------
123123
(1 row)

SELECT rtrim('<=====>BROWNING<=====>', '<>=') "RTRIM Example";
RTRIM Example
-----------------
<=====>BROWNING
(1 row)

LTRIM

目的

LTRIM(str, [set])支持输入参数str从左边第一个字符开始,删除输入参数集中的字符,直到第一个不匹配的字符结束,返回剩余的字符。如果省略 set,则默认为单个空格。

参数

str 输入参数包括任意数据类型。
set 输入参数,匹配字符串。

示例

SELECT ltrim(121232112, 21) "LTRIM Example";
LTRIM Example
---------------
32112
(1 row)

SELECT ltrim(121232112) "LTRIM Example";
LTRIM Example
---------------
121232112
(1 row)

SELECT ltrim('<=====>BROWNING<=====>'::char(25), '<>='::char(3)) "LTRIM Example";
LTRIM Example
--------------------
BROWNING<=====>
(1 row)

SELECT ltrim(null,null);
ltrim
-------

(1 row)

BTRIM

目的

LTRIM(str, [set])支持从输入参数str的两边删除输入匹配参数集中的字符(一一删除),直到第一个不匹配的值结束,函数返回剩余的字符。 如果省略 set,则将默认设置为单个空格。

参数

str 输入参数包括任意数据类型。
set 输入参数,匹配字符串。

示例

SELECT btrim(121232112, 21) "BTRIM Example";
BTRIM Example
---------------
3
(1 row)

SELECT btrim(121232112) "BTRIM Example";
BTRIM Example
---------------
121232112
(1 row)

SELECT btrim('<=====>BROWNING<=====>'::char(25), '<>='::char(3)) "BTRIM Example";
BTRIM Example
--------------------
BROWNING<=====>
(1 row)

SELECT btrim(null,null);
btrim
-------

(1 row)

LENGTH

目的

LENGTH(str, [src_encoding_name])计算输入参数str的字符长度,也将计算开头和结尾的空格。

参数

str 输入参数包括以下数据类型(integer, float, numeric, date, text, character, timestamp, timestamptz, interval),或可隐式转换为上述类型。
src_encoding_name 输入参数,获取指定的编码。

示例

SELECT length(192);
length
--------
3
(1 row)

SELECT length('Highgo DB!'::char(20));
length
--------
20
(1 row)

SELECT length(null);
length
--------

(1 row)

LENGTHB

目的

LENGTHB(str)计算输入参数str的字节长度,开头和结尾的空格也会计算在内。

参数

str 输入参数包含以下类型(integer, float, numeric, date, text, character, timestamp, timestamptz, interval),可以隐式转换为以上类型。

示例

SELECT lengthb(192);
lengthb
---------
3
(1 row)

SELECT lengthb('Highgo DB!'::nvarchar2(20));
lengthb
---------
10
(1 row)

SELECT lengthb(null);
lengthb
---------

(1 row)

BITAND

目的

BITAND(str1, str2)输入参数str1和str2是按位与,如果有任何参数为NULL,函数返回NULL,如果输入参数不能转换为bigint类型或超出范围,函数返回错误。

参数

str1 输入参数(numeric, integer等,必须可转换为 bigint 类型)。
str2 输入参数(numeric, integer等,必须可转换为 bigint 类型)。

示例

SELECT bitand(6, 3);
bitand
--------
2
(1 row)

SELECT bitand(6.1, 4.1);
bitand
--------
4
(1 row)

SELECT bitand(NULL, NULL);
bitand
--------

(1 row)

SELECT bitand(NULL, '4.1');
bitand
--------

(1 row)

LISTAGG

目的

LISTAGG(str1, [str2])支持将多行记录聚合为一条记录。str2可以省略,如果输入参数类型无法转换为文本类型,则函数返回错误。

参数

str1 输入参数(text),可以转换为文本类型。
str2 输入参数(text),可以转换为文本类型,连接字符或字符串。

示例

SELECT listagg(i::text) from generate_series(1, 3) g(i);
listagg
---------
123
(1 row)

SELECT listagg(i::text) from generate_series(1, 3) g(i) ;
listagg
---------
123
(1 row)

SELECT listagg(i::text) from generate_series(1, 3) g(i) group by i;
listagg
---------
1
2
3
(3 rows)

SELECT listagg(i::text) OVER (PARTITION BY i) from generate_series(1, 3) g(i);
listagg
---------
1
2
3
(3 rows)