PostgreSQL 中的 String函数

首页 / PostgreSQL入门教程 / PostgreSQL 中的 String函数

PostgreSQL字符串函数主要用于字符串操作。下表详细介绍了重要的字符串函数-

S. No.Name & 描述
1 ASCII()

返回最左边字符的数值

2 BIT_LENGTH()

返回参数的长度(以位为单位)

3 CHAR_LENGTH()

返回参数中的字符数

4 CHARACTER_LENGTH()

CHAR_LENGTH()的同义词

5 CONCAT_WS()

返回用分隔符连接

6 CONCAT()

返回串联的字符串

7 LCASE()

LOWER()的同义词

8 LEFT()

返回指定的最左边的字符数

9 LENGTH()

返回字符串的长度(以字节为单位)

10 LOWER()

以小写形式返回参数

链接:https://www.learnfk.comhttps://www.learnfk.com/postgresql/postgresql-string-functions.html

来源:LearnFk无涯教程网

11 LPAD()

返回字符串参数,用指定的字符串左填充

12 LTRIM()

删除前导空格

13 MID()

返回从指定位置开始的子字符串

14 POSITION()

LOCATE()的同义词

15 QUOTE()

转义要在SQL语句中使用的参数

16 REGEXP

使用正则表达式进行模式匹配

17 REPEAT()

重复字符串指定次数

18 REPLACE()

替换出现的指定字符串

19 REVERSE()

反转字符串中的字符

20 RIGHT()

返回指定的最右边字符

21 RPAD()

将字符串追加指定的次数

22 RTRIM()

删除尾随空格

24 SUBSTRING(), SUBSTR()

返回指定的子字符串

25 TRIM()

删除前导和尾随空格

26 UCASE()

同义词UPPER()

27 UPPER()

转换为大写

ASCII(str)

返回字符串str的最左边字符的数值。如果str是一个空字符串,则返回0。如果str为NULL,则返回NULL。 ASCII()适用于数字值介于0到255之间的字符。

testdb=# SELECT ASCII('2');
+---------------------------------------------------------+
| ASCII('2')                                              |
+---------------------------------------------------------+
| 50                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

testdb=# SELECT ASCII('dx');
+---------------------------------------------------------+
| ASCII('dx')                                             |
+---------------------------------------------------------+
| 100                                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

BIT_LENGTH(str)

返回字符串str的长度(以位为单位)。

无涯教程网

testdb=# SELECT BIT_LENGTH('text');
+---------------------------------------------------------+
| BIT_LENGTH('text')                                      |
+---------------------------------------------------------+
| 32                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CHAR_LENGTH(str)

返回字符串str的长度,以字符为单位。多字节字符算作单个字符。这意味着对于包含五个两个字节的字符串,LENGTH()返回10,而CHAR_LENGTH()返回5。

testdb=# SELECT CHAR_LENGTH('text');
+---------------------------------------------------------+
| CHAR_LENGTH('text')                                     |
+---------------------------------------------------------+
| 4                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CHARACTER_LENGTH(str)

CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。

CONCAT(str1,str2,...)

返回连接参数产生的字符串。它可能有一个或多个参数。如果所有参数均为非二进制字符串,则输出为非二进制字符串。如果参数包含任何二进制字符串,则输出为二进制字符串。数字参数将转换为等效的二进制字符串形式;如果您想避免这种情况,可以使用显式类型转换,如本示例所示:

testdb=# SELECT CONCAT('My', 'S', 'QL');
+---------------------------------------------------------+
| CONCAT('My', 'S', 'QL')                                 |
+---------------------------------------------------------+
| MySQL                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

CONCAT_WS(separator,str1,str2,...)

CONCAT_WS()代表用分隔符连接,是CONCAT()的一种特殊形式。第一个参数是其余参数的分隔符。分隔符被添加到要连接的字符串之间。分隔符可以是字符串,其余参数也可以。如果分隔符为NULL,则输出为NULL。

testdb=# SELECT CONCAT_WS(',','First name','Last Name' );
+---------------------------------------------------------+
| CONCAT_WS(',','First name','Last Name' )                |
+---------------------------------------------------------+
| First name, Last Name                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LCASE(STR)

LCASE()是LOWER()的同义词。

LEFT(str,len)

返回字符串str中最左边的len个字符;如果任何参数为NULL,则返回NULL。

testdb=# SELECT LEFT('foobarbar', 5);
+---------------------------------------------------------+
| LEFT('foobarbar', 5)                                    |
+---------------------------------------------------------+
| fooba                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LENGTH(str)

返回字符串str的长度,以字节为单位。多字节字符计为多个字节。这意味着对于包含五个两个字节的字符串,LENGTH()返回10,而CHAR_LENGTH()返回5。

testdb=# SELECT LENGTH('text');
+---------------------------------------------------------+
| LENGTH('text')                                          |
+---------------------------------------------------------+
| 4                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LOWER(str)

返回字符串str,其中所有字符均根据当前字符集映射更改为小写。

testdb=# SELECT LOWER('QUADRATICALLY');
+---------------------------------------------------------+
| LOWER('QUADRATICALLY')                                  |
+---------------------------------------------------------+
| quadratically                                           |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LPAD(STR,len,padstr)

返回字符串str,将其左填充字符串padstr至len个字符的长度。如果str大于len,则返回值缩短为len个字符。

testdb=# SELECT LPAD('hi',4,'??');
+---------------------------------------------------------+
| LPAD('hi',4,'??')                                       |
+---------------------------------------------------------+
| ??hi                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

LTRIM(str)

返回已删除前导空格字符的字符串str。

testdb=# SELECT LTRIM('  barbar');
+---------------------------------------------------------+
| LTRIM('  barbar')                                       |
+---------------------------------------------------------+
| barbar                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

MID(STR,POS,LEN)

MID(STR,POS,LEN) is a synonym for SUBSTRING(str,pos,len).

POSITION(substr IN str)

位置(substr IN str) is a synonym for LOCATE(substr,str).

QUOTE_IDENT(string text), QUOTE_LITERAL(string text), QUOTE_LITERAL(value anyelement), QUOTE_NULLABLE(value anyelement)

所有这些函数都返回给定的字符串,该字符串适当地用引号括起来用作SQL语句字符串中的标识符。在函数QUOTE_IDENT中,仅在必要时才添加引号。在函数QUOTE_LITERAL中,嵌入的单引号和反斜杠已正确加倍。如果传递了值,则将给定值强制转换为文本,然后将其引用为文字。函数QUOTE_NULLABLE将给定值强制转换为文本,然后将其引用为文字。或者,如果参数为null,则返回NULL。

以下是所有这些功能的Example-

testdb=# SELECT QUOTE_IDENT('Foo bar');
 quote_ident
-------------
 "Foo bar"
(1 row)


testdb=# SELECT QUOTE_LITERAL(E'O\'Reilly');
 quote_literal
---------------
 'O''Reilly'
(1 row)


testdb=# SELECT QUOTE_LITERAL(42.5);
 quote_literal
---------------
 '42.5'
(1 row)


testdb=# SELECT QUOTE_NULLABLE(42.5);
 quote_nullable
----------------
 '42.5'
(1 row)

expr REGEXP模式

REGEXP_MATCHES(string text,pattern text [,flags text])函数执行expr与pattern的模式匹配。如果expr与pat匹配,则返回1;否则,返回0。否则返回0。如果expr或pat为NULL,则输出为NULL。 REGEXP_MATCHES不区分大小写,除非与二进制字符串一起使用。

REGEXP_REPLACE(string text, pattern text, replacement text [, flags text]) 函数替换与POSIX正则表达式匹配的子字符串.

REGEXP_SPLIT_TO_ARRAY(string text, pattern text [, flags text ]),使用POSIX正则表达式作为分隔符分割字符串.

REGEXP_SPLIT_TO_TABLE(string text, pattern text [, flags text]), 使用POSIX正则表达式作为分隔符分割字符串

以下是所有这些功能的示例-

testdb=# SELECT REGEXP_MATCHES('ABCDEF','A%C%%');
 regexp_matches
----------------
(0 rows)


testdb=# SELECT REGEXP_REPLACE('Thomas', '.[mN]a.', 'M');
 regexp_replace
----------------
 ThM
(1 row)


testdb=# SELECT REGEXP_SPLIT_TO_ARRAY('hello world', E'\\s+');
 regexp_split_to_array
-----------------------
 {hello,world}
(1 row)


testdb=# SELECT REGEXP_SPLIT_TO_TABLE('hello world', E'\\s+');
 regexp_split_to_table
-----------------------
 hello
 world
(2 rows)

REPEAT(str,count)

返回由重复计数次数的字符串str组成的字符串。如果count小于1,则返回一个空字符串。如果str或count为NULL,则返回NULL。

testdb=# SELECT REPEAT('SQL', 3);
   repeat
-----------
 SQLSQLSQL
(1 row)

REPLACE(str,from_str,to_str)

返回字符串str,其中所有出现的字符串from_str都替换为字符串to_str。搜索from_str时,REPLACE()执行区分大小写的匹配。

testdb=# SELECT REPLACE('www.mysql.com', 'w', 'Ww');
      replace
------------------
 WwWwWw.mysql.com
(1 row)

REVERSE(str)

返回字符串str,其字符顺序颠倒。

testdb=# SELECT REVERSE('abcd');
 reverse
---------
 dcba
(1 row)

RIGHT(STR,LEN)

返回字符串str中最右边的len个字符;如果任何参数为NULL,则返回NULL。

testdb=# SELECT RIGHT('foobarbar', 4);
 right
-------
 rbar
(1 row)

RPAD(STR,len,padstr)

返回字符串str,用padstr右填充字符串,长度为len个字符。如果str大于len,则返回值缩短为len个字符。

testdb=# SELECT RPAD('hi',5,'?');
 rpad
-------
 hi???
(1 row)

RTRIM(str)

返回删除了结尾空格字符的字符串str。

testdb=# SELECT RTRIM('barbar   ');
 rtrim
--------
 barbar
(1 row)

SUBSTRING(str,pos),SUBSTRING(str from pos),SUBSTRING(str,pos,len),SUBSTRING(str from pos for len)

没有len参数的表单从字符串str返回一个从位置pos开始的子字符串。带有len参数的表单从字符串str返回一个len字符长的字符串,从位置pos开始。使用FROM的表单是标准SQL语法。 pos也可以使用负值。在这种情况下,子字符串的开头是字符串末尾的pos字符,而不是开头。可以以此函数的任何形式将负值用于pos。

testdb=# SELECT SUBSTRING('Quadratically',5);
 substring
-----------
 ratically
(1 row)


testdb=# SELECT SUBSTRING('foobarbar' FROM 4);
 substring
-----------
 barbar
(1 row)


testdb=# SELECT SUBSTRING('Quadratically',5,6);
 substring
-----------
 ratica
(1 row)

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str),TRIM([remstr FROM] str)

返回删除了所有remstr前缀或后缀的字符串str。如果没有给出两个说明符BOTH,LEADING或TRAILING,则假定两者均为。 remstr是可选的,如果未指定,则将删除空格。

testdb=# SELECT TRIM('  bar   ');
 btrim
-------
 bar
(1 row)


testdb=# SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
 ltrim
--------
 barxxx
(1 row)


testdb=# SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
 btrim
-------
 bar
(1 row)


testdb=# SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
 rtrim
-------
 bar
(1 row)

UCASE(str)

UCASE()是UPPER()的同义词。

UPPER(str)

返回字符串str,其中所有字符均根据当前字符集映射更改为大写。

testdb=# SELECT UPPER('manisha');
  upper
---------
 MANISHA
(1 row)

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品手记 -〔邱岳〕

技术领导力实战笔记 -〔TGO鲲鹏会〕

Nginx核心知识150讲 -〔陶辉〕

许式伟的架构课 -〔许式伟〕

消息队列高手课 -〔李玥〕

架构实战案例解析 -〔王庆友〕

数据中台实战课 -〔郭忆〕

操作系统实战45讲 -〔彭东〕

计算机基础实战课 -〔彭东〕

好记忆不如烂笔头。留下您的足迹吧 :)