1005.常量

 在PostgreSQL中有三种隐式类型常量:字符串、位串和数字。

 

字符串常量:

在SQL中,一个字符串常量是一个由单引号(')包围的任意字符序列,例如'This is a string'。

为了在一个字符串中包括一个单引号,可以写两个相连的单引号,例如'Dianne''s horse'。要包括一个反斜线字符,请写两个反斜线(\\)

两个只由空白及至少一个新行分隔的字符串常量会被连接在一起,并且将作为一个写在一起的字符串常量来对待。例如:

SELECT 'foo'

'bar';

等同于:

SELECT 'foobar';

 

如果配置参数standard_conforming_strings为off,那么PostgreSQL对常规字符串常量和转义字符串常量中的反斜线转义都识别。

不过,从PostgreSQL 9.1 开始,该参数的默认值为on,意味着只在转义字符串常量中识别反斜线转义。

 

美元引用的字符串常量

PostgreSQL提供了另一种被称为“美元引用”的方式来书写字符串常量。

一个美元引用的字符串常量由一个美元符号($)、一个可选的另个或更多字符的“标签”、另一个美元符号、一个构成字符串内容的任意字符序列、一个美元符号、开始这个美元引用的相同标签和一个美元符号组成。

例如,这里有两种不同的方法使用美元引用指定字符串“Dianne's horse”:

$$Dianne's horse$$

$SomeTag$Dianne's horse$SomeTag$

 

一个美元引用字符串的标签(如果有)遵循一个未被引用标识符的相同规则,除了它不能包含一个美元符号之外。

标签是大小写敏感的,因此$tag$String content$tag$是正确的,但是$TAG$String content$tag$不正确。

美元引用不是 SQL 标准的一部分,但是在书写复杂字符串文字方面,它常常是一种比兼容标准的单引号语法更方便的方法。

 

数字常量

如果使用了小数点,在小数点前面或后面必须至少有一个数字。

如果存在一个指数标记(e),在其后必须跟着至少一个数字。

在该常量中不能嵌入任何空白或其他字符。

注意任何前导的加号或减号并不实际被考虑为常量的一部分,它是一个应用到该常量的操作符。

如果一个不包含小数点和指数的数字常量的值适合类型integer(32 位),它首先被假定为类型integer。

否则如果它的值适合类型bigint(64 位),它被假定为类型bigint。

再否则它会被取做类型numeric。

包含小数点和/或指数的常量总是首先被假定为类型numeric。

 

必要时,你可以通过造型它来强制一个数字值被解释为一种指定数据类型。例如,你可以这样强制一个数字值被当做类型real(float4):

REAL '1.23'  -- string style

1.23::REAL   -- PostgreSQL (historical) style

带有::的语法是PostgreSQL的历史用法,就像函数调用语法一样。

 

CAST()以及函数调用语法也可以被用来指定任意表达式的运行时类型转换。

 

posted @ 2020-12-22 00:43  bufuzhou  阅读(148)  评论(0编辑  收藏  举报