首页 > 数据库 >PostgreSQL-标识符

PostgreSQL-标识符

时间:2022-08-31 21:00:33浏览次数:68  
标签:字符 PostgreSQL 常量 单引号 斜杠 字符串 标识符

一、标识符
标识符由字母或下划线()开头,标识符中的后续字符可以是字母、下划线、数字或美元符号。请注意,根据SQL标准的字母,标识符中不允许使用美元符号,因此使用它们可能会使应用程序的可移植性降低。
标识符最长为NAMEDATALEN-1,NAMEDATALEN默认是64,因此标识符最长为63字节。标识符不区分大小写,约定关键字大写,其余小写。
第二种标识符:由双引号括起来的标识符。这种标识符不是关键字而是普通的标识符。带引号的标识符可以包含任何字符,但是不能是空。对大小写敏感。引用标识符的变体允许包含由其代码点标识的转义Unicode 字符。此变体在开始双引号之前以U&(大写或小写U后跟&号)开头,中间没有任何空格,例如 U&"foo"。(请注意,这会与运算符 & 产生歧义。在运算符周围使用空格以避免此问题。)在引号内,可以通过编写反斜杠后跟四位十​​六进制代码点编号或以转义形式指定Unicode字符或者,反斜杠后跟加号,后跟六位十六进制代码点编号。

如果需要与反斜杠不同的转义字符,可以在字符串后使用 UECAPE 子句指定,例如:

U&"d!0061t!+000061" UESCAPE '!'

转义字符可以是除十六进制数字、加号、单引号、双引号或空白字符之外的任何单个字符。请注意,转义字符在 UECAPE 之后用单引号而不是双引号编写。

二、常量
PostgreSQL 中有三种隐式类型常量:字符串、位字符串和数字。常量也可以用显式类型指定,这可以使系统更准确的表示和更有效的处理。

字符串
SQL 中的字符串常量是由单引号 (') 限定的任意字符序列,例如“这是一个字符串”。要在字符串常量中包含单引号字符,请写入两个相邻的单引号,例如,'Dianne''s horse'。请注意,这与双引号字符 (") 不同。

仅由空格分隔且至少有一个换行符的两个字符串常量被连接起来,并被有效地视为字符串已被写为一个常量。例如:

PostgreSQL 还接受“转义”字符串常量,这是对 SQL 标准的扩展。转义字符串常量通过在开始单引号之前写入字母 E(大写或小写)来指定,例如 E'foo'。(跨行继续转义字符串常量时,仅在第一个开始引号之前写 E。)在转义字符串中,反斜杠字符 () 开始类似 C 的反斜杠转义序列,其中反斜杠和后续字符 (s) 表示一个特殊的字节值。反斜杠后面的任何其他字符都按字面意思表示。因此,要包含反斜杠字符,请编写两个反斜杠 (\)。此外,除了通常的 '' 之外,还可以通过写 ' 将单引号包含在转义字符串中。

虽然指定字符串常量的标准语法通常很方便,但当所需的字符串包含许多单引号或反斜杠时,可能很难理解,因为它们中的每一个都必须加倍。为了在这种情况下允许更易读的查询,PostgreSQL 提供了另一种方法,称为“美元引用”,用于写入字符串常量。用美元引用的字符串常量由一个美元符号 ($)、一个可选的零个或多个字符的“标记”、另一个美元符号、构成字符串内容的任意字符序列、一个美元符号、相同的标记组成开始这个美元报价,和一个美元符号。例如,这里有两种使用美元引号指定字符串“Dianne's horse”的不同方法:

$$Dianne's horse$$
$SomeTag$Dianne's horse$SomeTag$

请注意,在美元引用的字符串中,可以使用单引号而无需转义。事实上,美元引号字符串中的任何字符都不会被转义:字符串内容总是按字面意思书写。反斜杠不是特殊的,美元符号也不是特殊的,除非它们是与开始标签匹配的序列的一部分。
美元引号不是 SQL 标准的一部分,但它通常是一种比符合标准的单引号语法更方便的方式来编写复杂的字符串文字。当在其他常量中表示字符串常量时,它特别有用,这在过程函数定义中经常需要。

位字符串
位串常量看起来像常规字符串常量,在开始引号(没有中间空格)之前带有 B(大写或小写),例如 B'1001'。位串常量中允许的唯一字符是 0 和 1。或者,可以使用前导 X(大写或小写)以十六进制表示法指定位串常量,例如 X'1FF'。这种表示法相当于一个位串常量,每个十六进制数字有四个二进制数字。两种形式的位串常量都可以像常规字符串常量一样跨行继续。美元引号不能用于位串常量。

数字常量
格式为:

digits
digits.[digits][e[+-]digits]
[digits].digits[e[+-]digits]
digitse[+-]digits

其中digits 是一个或多个十进制数字(0 到9)。如果使用一位,则必须在小数点之前或之后至少有一位。指数标记 (e) 后必须至少有一位数字,如果存在的话。常量中不能嵌入任何空格或其他字符。请注意,任何前导加号或减号实际上都不被视为常数的一部分;它是应用于常量的运算符。
一个既不包含小数点也不包含指数的数字常量如果其值适合整数类型(32 位),则最初假定它是integer;否则,如果它的值适合 bigint 类型(64 位),则假定它是 bigint 类型;否则它被认为是numeric。包含小数点和/或指数的常量最初总是假定为numeric。

数字常量最初分配的数据类型只是类型解析算法的起点。在大多数情况下,常量将根据上下文自动强制转换为最合适的类型。必要时,您可以强制将数值转换为特定的数据类型。

其他类型常量

type 'string'
'string'::type
CAST ( 'string' AS type )

将'string'指定为type 类型

注释

  1. 使用--
  2. 使用/* */

标签:字符,PostgreSQL,常量,单引号,斜杠,字符串,标识符
From: https://www.cnblogs.com/shigongp/p/16644035.html

相关文章

  • 转:postgresql-创建主键自增的表
    之前一直用的mysql,这个也基本上是主流,主键自增是很多建表规范中的硬性要求,不过这两种数据库主键自增的区别还是很大的通常navicat中对mysql主键自增直接客户端指定即......
  • Postgresql 解决pg掉电后无法重启的问题
    1、机房断电后重启pg数据库,报如下错误:Aug3110:55:53localhost.localdomainpostmaster[1716]:2022-08-3110:55:53.775CST[1716]LOG:couldnotopendirectory"p......
  • postgresql 错误:关系“global/1213”中的块0存在无效项
    问题Postgresql12连接时提示错误:关系“global/1213”中的块0存在无效项解决方案提示:此操作将销毁数据,即损坏页面上的所有行!但是,它允许您跳过错误,并从表中......
  • PostgreSQL 9.6.0更新补丁到9.6.24
    背景  生产环境安扫,PostgreSQL数据库扫出来一堆漏洞。目前我们线上PostgreSQL数据库版本大部分是9.6.0,PostgreSQL官方9.6最新补丁是9.6.24。升级步骤下载PostgreSQL9......
  • PostgreSQL用psql导入sql文件
    一、sql文件-------------------------------------------------------------------------------basics.sql---Tutorialonthebasics(tablecreationanddata......
  • Java 的注释、标识符、关键字
    注释平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。注释并不会被执行,是给我们写代码的人看的。......
  • 5分钟搞定MySQL/PostgreSQL/Oracle到StarRocks数据迁移同步-CloudCanal实战
    ##简述CloudCanal2.1.0.x版本开始支持StarRocks作为对端的数据迁移同步能力本文通过MySQL->StarRocks的数据迁移同步案例简要介绍这个源端的能力。链路特点:-结......
  • 京东云PostgreSQL在GIS场景的应用分享
    在地图或地理信息有关的场景里,地址关键词的检索尤其重要。比如打开百度地图,想要查询某个位置的信息“北京市海淀区清华东路17号中国农业大学”,往往我们输入的是关键词“中......
  • PostgreSQL快速导入千万条数据
    为了与MySQL做个对比,做一个PG的数据导入测试,使用COPY方式,测试环境保持一致,具体如下所述。一、测试环境■48CPU/376GCPU(s):48Thread(s)percore:......
  • 标识符
    关键字程序提前定义好的有特定用法的词 不能再定义 命名时可以用A-Za-z$_当做开始的第一个字符其后可以用A-Za-z$_ 数字充当后面的字符标识符是大小写敏......