memo:PostgreSQL字符串函数

字符串函数和运算符是我们经常在SQL需要用到的。尤其是regexp_split_to_arrayregexp_split_to_table(string text,pattern text [,flags text])这两个函数很多时候很方便。比如根据已经知道的id去执行一个函数,取得相应信息。下面的的例子是取得101,102,105三个用户的基本信息。

select get_user_info(user_id::Integer) from ( select regexp_split_to_table('101,105',',') as user_id) userIds


下面是字符串函数一览。

Table 9-5. SQL String Functions and Operators

Function Return Type Description Example Result
string || string text String concatenation 'Post' || 'greSQL' PostgreSQL
string || non-string or non-string || string text String concatenation with one non-string input 'Value: ' || 42 Value: 42
bit_length(string) int Number of bits in string bit_length('jose') 32
char_length(string) or character_length(string) int Number of characters in string char_length('jose') 4
lower(string) text Convert string to lower case lower('TOM') tom
octet_length(string) int Number of bytes in string octet_length('jose') 4
overlay(string placing string from int [for int]) text Replace substring overlay('Txxxxas' placing 'hom' from 2 for 4) Thomas
position(substring in string) int Location of specified substring position('om' in 'Thomas') 3
substring(string [from int] [for int]) text Extract substring substring('Thomas' from 2 for 3) hom
substring(string from pattern) text Extract substring matching POSIX regular expression. See Section 9.7 for more information on pattern matching. substring('Thomas' from '...$') mas
substring(string from pattern for escape) text Extract substring matching SQL regular expression. See Section 9.7 for more information on pattern matching. substring('Thomas' from '%#"o_a#"_' for '#') oma
trim([leading | trailing | both] [characters] from string) text Remove the longest string containing only the characters (a space by default) from the start/end/both ends of the string trim(both 'x' from 'xTomxx') Tom
upper(string) text Convert string to upper case upper('tom') TOM


Table 9-6. Other String Functions

Function Return Type Description Example Result
ascii(string) int ASCII code of the first character of the argument. For UTF8 returns the Unicode code point of the character. For other multibyte encodings,the argument must be an ASCII character. ascii('x') 120
btrim(string text [,characters text]) text Remove the longest string consisting only of characters in characters (a space by default) from the start and end of string btrim('xyxtrimyyx','xy') trim
chr(int) text Character with the given code. For UTF8 the argument is treated as a Unicode code point. For other multibyte encodings the argument must designate an ASCII character. The NULL (0) character is not allowed because text data types cannot store such bytes. chr(65) A
concat(str "any" [,str "any" [,...] ]) text Concatenate all arguments. NULL arguments are ignored. concat('abcde',2,NULL,22) abcde222
concat_ws(sep text,...] ]) text Concatenate all but first arguments with separators. The first parameter is used as a separator. NULL arguments are ignored. concat_ws(','abcde',22) abcde,22
convert(string bytea,src_encoding name,dest_encoding name) bytea Convert string to dest_encoding. The original encoding is specified by src_encoding. The string must be valid in this encoding. Conversions can be defined by CREATE CONVERSION. Also there are some predefined conversions. See Table 9-7 for available conversions. convert('text_in_utf8','UTF8','LATIN1') text_in_utf8 represented in Latin-1 encoding (ISO 8859-1)
convert_from(string bytea,src_encoding name) text Convert string to the database encoding. The original encoding is specified by src_encoding. The string must be valid in this encoding. convert_from('text_in_utf8','UTF8') text_in_utf8 represented in the current database encoding
convert_to(string text,dest_encoding name) bytea Convert string to dest_encoding. convert_to('some text','UTF8') some text represented in the UTF8 encoding
decode(string text,format text) bytea Decode binary data from textual representation in string. Options for format are same as in encode. decode('MTIzAAE=','base64') \x3132330001
encode(data bytea,format text) text Encode binary data into a textual representation. Supported formats are: base64,hex,escape. escape merely outputs null bytes as \000 and doubles backslashes. encode(E'123\\000\\001','base64') MTIzAAE=
format(formatstr text [,...] ]) text Format a string. This function is similar to the C function sprintf; but only the following conversion specifications are recognized: %s interpolates the corresponding argument as a string; %I escapes its argument as an SQL identifier; %L escapes its argument as an SQL literal; %% outputs a literal %. A conversion can reference an explicit parameter position by preceding the conversion specifier with n$,where n is the argument position. See also Example 39-1. format('Hello %s,%1$s','World') Hello World,World
initcap(string) text Convert the first letter of each word to upper case and the rest to lower case. Words are sequences of alphanumeric characters separated by non-alphanumeric characters. initcap('hi THOMAS') Hi Thomas
left(str text,n int) text Return first n characters in the string. When n is negative,return all but last |n| characters. left('abcde',2) ab
length(string) int Number of characters in string length('jose') 4
length(string bytea,encoding name ) int Number of characters in string in the given encoding. The string must be valid in this encoding. length('jose','UTF8') 4
lpad(string text,length int [,fill text]) text Fill up the string to length length by prepending the characters fill (a space by default). If the string is already longer than length then it is truncated (on the right). lpad('hi',5,'xy') xyxhi
ltrim(string text [,characters text]) text Remove the longest string containing only characters from characters (a space by default) from the start of string ltrim('zzzytrim','xyz') trim
md5(string) text Calculates the MD5 hash of string,returning the result in hexadecimal md5('abc') 900150983cd24fb0 d6963f7d28e17f72
pg_client_encoding() name Current client encoding name pg_client_encoding() SQL_ASCII
quote_ident(string text) text Return the given string suitably quoted to be used as an identifier in an SQL statement string. Quotes are added only if necessary (i.e.,if the string contains non-identifier characters or would be case-folded). Embedded quotes are properly doubled. See also Example 39-1. quote_ident('Foo bar') "Foo bar"
quote_literal(string text) text Return the given string suitably quoted to be used as a string literal in an SQL statement string. Embedded single-quotes and backslashes are properly doubled. Note that quote_literal returns null on null input; if the argument might be null,quote_nullable is often more suitable. See also Example 39-1. quote_literal(E'O\'Reilly') 'O''Reilly'
quote_literal(value anyelement) text Coerce the given value to text and then quote it as a literal. Embedded single-quotes and backslashes are properly doubled. quote_literal(42.5) '42.5'
quote_nullable(string text) text Return the given string suitably quoted to be used as a string literal in an SQL statement string; or,if the argument is null,return NULL. Embedded single-quotes and backslashes are properly doubled. See also Example 39-1. quote_nullable(NULL) NULL
quote_nullable(value anyelement) text Coerce the given value to text and then quote it as a literal; or,return NULL. Embedded single-quotes and backslashes are properly doubled. quote_nullable(42.5) '42.5'
regexp_matches(string text,flags text]) setof text[] Return all captured substrings resulting from matching a POSIX regular expression against the string. See Section 9.7.3 for more information. regexp_matches('foobarbequebaz','(bar)(beque)') {bar,beque}
regexp_replace(string text,pattern text,replacement text [, flags text]) text Replace substring(s) matching a POSIX regular expression. See Section 9.7.3 for more information. regexp_replace('Thomas','.[mN]a.','M') ThM
regexp_split_to_array(string text,flags text ]) text[] Split string using a POSIX regular expression as the delimiter. See Section 9.7.3 for more information. regexp_split_to_array('hello world',E'\\s+') {hello,world}
regexp_split_to_table(string text,flags text]) setof text Split string using a POSIX regular expression as the delimiter. See Section 9.7.3 for more information. regexp_split_to_table('hello world',E'\\s+') hello

world

(2 rows)
repeat(string text,number int) text Repeat string the specified number of times repeat('Pg',4) PgPgPgPg
replace(string text,from text,to text) text Replace all occurrences in string of substring from with substring to replace('abcdefabcdef','cd','XX') abXXefabXXef
reverse(str) text Return reversed string. reverse('abcde') edcba
right(str text,n int) text Return last n characters in the string. When n is negative,return all but first |n| characters. right('abcde',2) de
rpad(string text,fill text]) text Fill up the string to length length by appending the characters fill (a space by default). If the string is already longer than length then it is truncated. rpad('hi','xy') hixyx
rtrim(string text [,characters text]) text Remove the longest string containing only characters from characters (a space by default) from the end of string rtrim('trimxxxx','x') trim
split_part(string text,delimiter text,field int) text Split string on delimiter and return the given field (counting from one) split_part('abc~@~def~@~ghi','~@~',2) def
strpos(string,substring) int Location of specified substring (same as position(substring in string),but note the reversed argument order) strpos('high','ig') 2
substr(string,from [,count]) text Extract substring (same as substring(string from from for count)) substr('alphabet',3,2) ph
to_ascii(string text [,encoding text]) text Convert string to ASCII from another encoding (only supports conversion from LATIN1,LATIN2, LATIN9,and WIN1250 encodings) to_ascii('Karel') Karel
to_hex(number int or bigint) text Convert number to its equivalent hexadecimal representation to_hex(2147483647) 7fffffff
translate(string text,to text) text Any character in string that matches a character in the from set is replaced by the corresponding character in the to set. If from is longer than to,occurrences of the extra characters in from are removed. translate('12345','143','ax') a2x5

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,但是对于懂数据库却不熟悉Oracle的同学可能会有一定的障碍。正好在最近的一个项目中碰到了这样一个任务,于是研究了一下Oracle的数据导入导出,在这里跟大家分享一下。......_oracle 迁移方法 对比
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共700多人左右 1 + 2)。最近我们在使用MYSQL 8 的情况下(8.025)在数据库运行中出现一个问题 参数prefer_order_i..._mysql prefer_ordering_index
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才成功连上,在这分享一下我的经验,也仅仅是经验分享,有不足的地方欢迎大家在评论区补充交流。_navicat连接opengauss
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation。它是一种开放标准格式,将数据组织成中详述的键/值对和数组。_postgresql json
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgresql 注:navicat老版本可能报错。1.在springboot中引入我们需要的依赖以及相应版本。用代码生成器生成代码后,即可进行增删改查(略)安装好postgresql 略。更改配置信息(注释中有)_mybatisplus postgresql
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解析、修改、删除、更新、强制踢出数据库所有使用用户、连表更新与删除、获取今年第一天、获取近12个月的年月、锁表处理、系统表使用(查询所有表和字段及注释、查询表占用空间)、指定数据库查找模式search_path、postgre备份及还原_pgsql分组取每组第一条
文章浏览阅读3.3k次。上一篇我们学习了日志清理,日志清理虽然解决了日志膨胀的问题,但就无法再恢复检查点之前的一致性状态。因此,我们还需要日志归档,pg的日志归档原理和Oracle类似,不过归档命令需要自己配置。以下代码在postmaster.c除了开启归档外,还需要保证wal_level不能是MINIMAL状态(因为该状态下有些操作不会记录日志)。在db启动时,会同时检查archive_mode和wal_level。以下代码也在postmaster.c(PostmasterMain函数)。......_postgresql archive_mode
文章浏览阅读3k次。系统:ubuntu22.04.3目的:利用向日葵实现windows远程控制ubuntu。_csdn局域网桌面控制ubuntu
文章浏览阅读1.6k次。表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案。一般建议当单表大小超过内存就可以考虑表分区了。1,继承式分区,分为触发器(trigger)和规则(rule)两种方式触发器的方式1)创建表CREATE TABLE "public"."track_info_trigger_partition" ( "id" serial, "object_type" int2 NOT NULL DEFAULT 0, "object_name..._pg数据表分区的实现
文章浏览阅读3.3k次。物联网平台开源的有几个,就我晓得的有、、thingskit、JetLink、DG-iot(还有其他开源的,欢迎在评论区留言哦!),然后重点分析了下ThingsBoard、ThingsPanel和JetLink,ThingsBoard和Jetlinks是工程师思维产品,可以更多的通过配置去实现开发的目的,ThingsPanel是业务人员思路产品,或者开发或者用,避免了复杂的配置带来的较高学习门槛。ThingsBoard和Jetlinks是Java技术体系的,ThingsPanel是PHP开发的。_jetlinks和thingsboard
文章浏览阅读3.8k次。PostgreSQL 数据类型转换_pgsql数字转字符串
文章浏览阅读7k次,点赞3次,收藏14次。在做数据统计页面时,总会遇到统计某段时间内,每天、每月、每年的数据视图(柱状图、折线图等)。这些统计数据一眼看过去也简单呀,不就是按照时间周期(天、月、年)对统计数据进行分个组就完了嘛?但是会有一个问题,简单的写个sql对周期分组,获取到的统计数据是缺失的,即没有数据的那天,整条记录也都没有了。如下图需求:以当前月份(2023年2月)为起点,往后倒推一年,查询之前一年里每个月的统计数据。可见图中的数据其实是缺少的,这条sql只查询到了有数据的月份(23年的1月、2月,22年的12月)_如何用一条sql查出按年按月按天的汇总
文章浏览阅读3.8k次,点赞66次,收藏51次。PostgreSQL全球开发小组与2022年10月13日,宣布发布PostgreSQL15,这是世界上最先进的开源数据库的最新版本_mysql8 postgresql15
文章浏览阅读1.3k次。上文介绍了磁盘管理器中VFD的实现原理,本篇将从上层角度讲解磁盘管理器的工作细节。_smgrrelationdata
文章浏览阅读1.1k次。PostgreSQL设置中文语言界面和局域网访问_postgressql汉化
文章浏览阅读4.2k次。PostgreSQL 修改数据存储路径_如何设置postgresql 数据目录
文章浏览阅读4.7k次。在项目中用到了多数据源,在连接postgres数据库时,项目启动报错,说数据库连接错误,说dual不存在,网上好多教程都是说数据库查询的时候的大小写问题,而这个仅仅是连接,咋鞥却处理方法是修改application-dev.yml中的配置文件.项目中的druid参数是这样的:确实在配置文件中有个查询语句。_relation "dual" does not exist
文章浏览阅读4.9k次。PostgreSQL是一款强大的关系型数据库,但在实际使用过程中,许多用户经常会遇到慢SQL的问题。这些问题不仅会降低数据库性能,还会直接影响业务流程和用户体验。因此,本文将会深入分析PostgreSQL慢SQL的原因和优化方案,帮助用户更好地利用这个优秀的数据库系统。无论你是初学者还是专业开发者,本文都将为你提供实用的技巧和方法,让你的PostgreSQL数据库始终保持高效快速。_postgresql数据库优化
文章浏览阅读1.6k次。Linux配置postgresql开机自启_linux 启动pgsql
文章浏览阅读2k次。本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构。后续更高级的HA模式都是基于这个最基本的主备搭建。_postgresql主备