一、Postgresql数据库字符串类型
类型 描述
character varying(n) 或 varchar(n) 变长字符串类型,最大空间1GB,存储空间4+实际的字符串长度。与MySQL中的varchar(n)或text(n),以及Oracle中的varchar2(n)类似,但是在MySQL中varchar最多只有64KB,Oracle中的varchar2最多只有4000字节。
character(n)或char(n) 定长字符串类型,不足空白补充。最大1GB,存储空间4+n
text 变长字符串类型。无长度限制,与MySQL中的LONGTEXT类似

varchar(n) 在没有指定 n 的值时,表示可以接受1GB内的任何长度的字符串,建议加上 n
char(n) 在没有指定 n 值时,表示 char(1) ,
不管varchar还是char类型最小存储空间时4字节。而在Postgresql数据库中varchar和char指定长度过长时,实际在字段中存储的可能只是一个指针,具体内容会存储在toast表中,指针便于对字段值的快速访问。
在一些其他种类的数据库中定长的char有一定的优势。但是在postgresql中没有什么差别。大多数还是会用varchar或text。

二、字符串函数和操作符

支持标准的SQL字符串的函数和操作符:

函数 返回类型 描述 例子 结果
string ll string text 字符串链接 selec ‘abc’ ll ‘EFG’; ‘abcEFG’
length(string) int string 中字符的个数,主要区分的是中文和英文不同 select length(‘abc’) 3
bit_length(string) int 字符串二进制位长度(个数) select bit_length(‘jack’); 32
char_length(string)或character_length(string) int 字符串中字符的个数 select char_length(‘jack’); 4
octet_length(string) int 字符串中的字节数 select octet_length(‘jack’); 4
convert(string using conversion_name) test 使用指定的转换名字改变编码。转换可以通过CREATE CONVERSION定义,系统中也有一些预定义的转换名字 select convert(‘Postgresql’ using iso_8859_1_to_utf8); UTF8编码的Postgresql
convert( string text, [ src_encoding name, ], dest_encoding name ) text 把字符串原来编码位 src_encoding 转成 dest_encoding 编码。如果没有指定src_encoding,则src_encoding为数据库编码 select convert( ‘abc’, ‘UTF8’, ‘GBK’ ) 以GBK编码的abc
lower(string) text 把所有的字符串转成小写 select lower(‘TOM’); tom
upper(string) text 把所有字符串转成大写 select upper(‘tom’); TOM
initcap(string) text 将字符串中每个单词的第一个字符转为大写,其他变为小写(字符串中区分单词:非字符数字分割) initcap(‘hi jack’) Hi Jack
overlay(string placing string from int[for int]) text 指定子字符串替换的范围,例子里时用 hom 字符串替换 Txxxxas 中从第2个字符开始的4个字符,如果没有指定 for int ,int 是子字符串的长度 select overlay(‘Txxxxas’ placing ‘hom’ from 2 for 4); Thomas
position( substring in string ) int 查找substring 在 string 中的起始位置 select position( ‘om’ in ‘Thomas’); 3
strpos(string , substring) int 查找指定的子字符串substring在string中的起始位置 select strpos(‘helloworld’ ,‘llo’); 3
substring(string, from [, count] ) text 截取string中指定位置from的指定长度count的子字符串 select substring ( ‘jack’ , 2, 2) ac
substring(string from int for int ) text 抽取指定位置(from int )开始指定个数(for int)的字符串,如果没有指定 for int 则从指定位置一直到结束全部截取 select substring( ’ Thomas’ from 2 for 3 ); hom
substring(string from pattern) text 截取匹配posix正则表达式的字符串 select substring(‘hello world’ from ‘…$’); rld
substring(string from pattern for escape) text 截取匹配posix正则表达式的字符串,for为转移字符 select substring(‘Thomas’ from ‘%#“o_a#”_’ for ‘#’); oma
replace(string text, from text, to text ) text 把字符串string中所有出现的from 都替换成 to select replace(‘abcddggdd’,‘d’,‘5’) abc55gg55
ascii(string) int 字符串中第一个字符的ASCII码 select ascii(‘abc’) 97
chr(int) text 给出ASCII码所对应的字符 select chr(97) a
decode(string text, type text ) bytea 把早先用encode编码的string里面的二进制数据解码,支持类型:base64、hex、escape
encode(data bytea, type text) text 把二进制数据编码位只包含ASCII形式的数据,支持类型与decode类似
lpad(string text, length int [, fill text] ) text 通过在指定的string左边填充字符 fill (不指定默认空白),把string填充为指定的length长度,如果string长度比指定的length长,则将其尾部截断,例子里是将字符串 OK 左边使用 1 填充直到长度为5 select lpad( ‘OK’, ‘5’, ‘1’) 111OK
rpad(string text, length int [, fill text] ) text 通过在指定的string右边填充字符 fill (不指定默认空白),把string填充为指定的length长度,如果string长度比指定的length长,则将其尾部截断,例子里是将字符串 OK 右边使用 1 填充直到长度为5 select rpad( ‘OK’, ‘5’, ‘1’) OK111
btrim( string text [ , character text ] ) text 从string的开头和结尾删除含有 character 中的字符,不指定character默认空格 select btrim( ‘aajackaaaa’, ‘aa’ ) jack
ltrim( string text [ , character text ] ) text 从string的开头(左边)删除含有 character 中的字符,不指定character默认空格 select btrim( ‘aajackaaaa’, ‘aa’ ) jackaaaa
rtrim( string text [ , character text ] ) text 从string的结尾(右边)删除含有 character 中的字符,不指定character默认空格 select btrim( ‘aajackaaaa’, ‘aa’ ) aajack
quote_ident(string) text 返回适用于SQL语句的标识符形式(使用适当的引号进行界定),只有在必要的时候才会添加引号(字符串包含非标识符字符或者会转换大小写的字符),嵌入的引号会被恰当的写双份
quote_literal(string) text 返回适用于在SQL语句里当作文本的形式,嵌入的引号和反斜杠被恰当的写双份
pg_client_encoding() name 当前客户端编码名称 select pg_client_encoding(); UTF8
repeat(string text, number int ) text 将string重复number次 select repeat( ‘abc’, 2); abcabc
split_part(string text, delimiter text, field int) text 根据delimiter分隔string,返回生成第 field 个字符串 split_part( ‘123#456#789’, ‘#’, 2 ) 456
regexp_replace(string text, pattern text, replacement text [ , flages text ]) text 替换匹配POSIX正则表达式的子字符串
三、特别注释

字符串length类似函数用法:

postgres=# select length('abcd');length
--------4
(1 row)postgres=# select octet_length('abcd');octet_length
--------------4
(1 row)postgres=# select bit_length('abcd');bit_length
------------32
(1 row)postgres=# select length('测试');length
--------2
(1 row)postgres=# select octet_length('测试');octet_length
--------------6
(1 row)postgres=# select bit_length('测试');bit_length
------------48
(1 row)

Postgresql学习笔记之——数据类型之字符串类型相关推荐

  1. Python学习笔记简单数据类型之字符串

    1.字符串: (1).字符串就是一系列字符,串起来形成的一种简单数据类型.在Python中,用引号括起来的都是字符串,包括单引号,双引号,其中字符串可以灵活的运用起来,字符串中可以包括引号和撇号,示例 ...

  2. Swift学习笔记_数据类型_整数类型

    1 整数类型 整数就是没有小数部分的数字. 整数类型分为两种: (1)有符号整数类型:表示负整数.零.和正整数 (2)无符号整数类型:表示零.和正整数 有符号整数类型有5种表示方式: (1)Int8: ...

  3. Postgresql学习笔记-高级语法篇

    Postgresql学习笔记-高级语法篇 Postgresql 约束 Postgresql约束用于规定表中的数据规则. 如果存在违反约束的数据行为,行为会被约束终止. 约束可以在创建表的时候就规定(通 ...

  4. PostgreSQL学习笔记(更新ing)+c# 使用ef连接数据库postgreSQL

    目录 PostgreSQL学习笔记 一.PostgreSQL创建.删除数据库(表).架构 1.创建数据库 CREATE DATABASE 2.查看数据库 3.删除数据库 4.创建表 5.删除表 6.架 ...

  5. 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)

    Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...

  6. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  7. 《流畅的python》学习笔记之python是什么类型的语言?

    讨论类型时,最好考虑两条不同的坐标线! 强类型和弱类型 如果一门语言很少隐式转换类型,说明它是强类型语言.如果经常这么做,说明它是弱类型语言.其中,java,c++和python是强类型语言,php, ...

  8. 数据类型之字符串类型

    数据类型之字符串类型 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.创建字符串很简单,只要为变量分配一个值即可.例如: str1 = 'Hello Wo ...

  9. WinDbg学习笔记(二)--字符串访问断点

    标 题: [原创]WinDbg学习笔记(二)--字符串访问断点 作 者: gaorqing 时 间: 2009-07-25,21:39:04 链 接: http://bbs.pediy.com/sho ...

最新文章

  1. Javascript中undefined,NaN等特殊比较
  2. python魔法方法和普通方法_Python龙珠训练营九:魔法方法
  3. es6 Promise
  4. python写的游戏怎么给别人玩-用python写游戏脚本原来这么简单
  5. computed 与methods , watched 的区别
  6. Scala可变数组和不可变数组之间相互转换
  7. Android Http请求框架二:xUtils 框架网络请求
  8. 可行的DeltaSpike教程
  9. python sns绘制回归线_Python数分实战:员工流失情况预测
  10. phpmyadmin在centos 7中安装
  11. 深入探讨SDN拓扑发现机制:新的攻击及实践对策【SDN拓扑】(上)
  12. java语言就业方向_2019年汉语言专业最全就业方向
  13. https 方式使用git@osc设置密码的方式
  14. 自动运维化tools篇2:通过SSH信任关系,批量修改LINUX密码
  15. PowerDesigner的基本使用
  16. OpenPDF 或 itext5 根据pdf模板生成多页PDF
  17. 超简单的HIDPI设置
  18. 查看linux主机防火墙列表,linux防火墙状态查看的方法实例
  19. 谷歌邮箱lmap服务器填什么_Gmail IMAP的应用技巧
  20. 高中数学,解析几何高考压轴题解题技巧

热门文章

  1. HTML个人博客模板(私人设计)
  2. 给按学历评判一个人的所有企业人士的一封信
  3. 利用onedrive 来同步zotero 文献附件数据
  4. 暗调时尚科幻杂志科技封面人物效果
  5. 一家被“送”上市的公司,达美乐称霸披萨界?
  6. JAVA学习—定义标准的POJO类—2021-06-30
  7. 单词要诀——词根记录
  8. 雷电模拟器详细安装流程
  9. 今天是个比较特殊的日子——再次受到创伤
  10. 自定义ImageView,实现点击之后算出点击的是身体的哪个部位