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() 以小写形式返回参数 |
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)
参考链接
https://www.learnfk.com/postgresql/postgresql-string-functions.html
标签:PostgreSQL,String,无涯,testdb,str,字符串,+------------------------------------------- From: https://blog.51cto.com/u_14033984/8981910