PostgreSQL 数据类型格式化函数
PostgreSQL 提供了多种数据类型格式化函数,用于将数据按照指定的格式进行显示。以下是一些常用的数据类型格式化函数:日期和时间格式化:1. to_char: - 描述:将日期或时间戳格式化为字符串。 - 示例: SELECT to_char(current_date, 'YYYY-MM-DD');2. to_timestamp: - 描述:将字符串解析为时间戳。 - 示例: SELECT to_timestamp('2023-01-15', 'YYYY-MM-DD');数值格式化:1. to_char: - 描述:将数值格式化为字符串,并可以指定小数点位数和千位分隔符。 - 示例: SELECT to_char(1234567.89, '9,999,999.99');文本格式化:1. upper 和 lower: - 描述:将文本转换为大写或小写。 - 示例: SELECT upper('hello') AS uppercase, low...
PostgreSQL 模式匹配
在 PostgreSQL 中,模式匹配是通过使用模式匹配操作符和函数来实现的。以下是一些常用的模式匹配操作符:模式匹配操作符:1. LIKE 操作符: - 描述:用于在字符串中进行简单的模式匹配。 - 示例: SELECT * FROM table_name WHERE column_name LIKE 'pattern';2. ILIKE 操作符: - 描述:与 LIKE 操作符类似,但是不区分大小写。 - 示例: SELECT * FROM table_name WHERE column_name ILIKE 'pattern';3. SIMILAR TO 操作符: - 描述:用于进行正则表达式风格的模式匹配。 - 示例: SELECT * FROM table_name WHERE column_name SIMILAR TO 'pattern';模式匹配函数:1. position: - 描述:返回子字符串在字符串中的位置。 - 示例: SELECT position...
PostgreSQL 二进制串函数和操作符
在 PostgreSQL 中,二进制字符串(bytea 类型)是一种用于存储二进制数据(比如图像、音频文件等)的数据类型。以下是一些 PostgreSQL 中用于处理二进制字符串的函数和操作符:二进制字符串函数1. LENGTH 函数LENGTH(bytea): 返回二进制字符串的字节数。SELECT LENGTH(E'\\xDEADBEEF'::bytea) AS bytea_length;2. SUBSTRING 函数SUBSTRING(bytea FROM start [FOR length]): 从二进制字符串中提取子字符串。SELECT SUBSTRING(E'\\xDEADBEEF'::bytea FROM 2 FOR 3) AS substring_result;3. CONCAT 函数CONCAT(bytea1, bytea2, ...): 连接多个二进制字符串。SELECT CONCAT(E'\\xDEADBEEF'::bytea, E'\\xABCD'::bytea) AS concatenated_b...
PostgreSQL 字符串函数和操作符
在 PostgreSQL 中,有许多内建的字符串函数和操作符,用于执行各种字符串操作。这些函数和操作符允许在 SQL 查询中对文本数据进行处理和转换。以下是一些常见的字符串函数和操作符:字符串函数1. 基本字符串函数 CONCAT(string1, string2, ...): 连接多个字符串。 LENGTH(string): 返回字符串的字符数。 CHAR_LENGTH(string): 返回字符串的字符数(与 LENGTH 相同)。 UPPER(string): 将字符串转换为大写。 LOWER(string): 将字符串转换为小写。 TRIM([leading|trailing|both] trim_character FROM string): 移除字符串两端的空白或指定字符。SELECT CONCAT('Hello', ' ', 'World') AS concatenated_text, LENGTH('PostgreSQL') AS string_length, UPPER('...
PostgreSQL 数学函数和操作符
在 PostgreSQL 中,有许多内建的数学函数和操作符,用于执行各种数学运算。这些函数和操作符使得可以在 SQL 查询中执行复杂的数学计算。以下是一些常见的数学函数和操作符:数学函数1. 基本数学函数 ABS(x): 返回 x 的绝对值。 CEIL(x) 或 CEILING(x): 返回不小于 x 的最小整数。 FLOOR(x): 返回不大于 x 的最大整数。 ROUND(x): 返回最接近 x 的整数,四舍五入。 POWER(x, y): 返回 x 的 y 次方。 SQRT(x): 返回 x 的平方根。SELECT ABS(-5) AS absolute_value, CEIL(4.3) AS ceil_value, FLOOR(4.7) AS floor_value, ROUND(3.14) AS round_value, POWER(2, 3) AS power_value, SQRT(9) AS sqrt_value;2. 三角函数 SIN(x), COS(x), TAN(x): 返回 x 的正弦、余弦和正切值。 ASIN(x), ACOS(x), ATAN(x...
PostgreSQL 比较函数和操作符
在 PostgreSQL 中,比较函数和比较操作符都用于比较值的大小或相等性。虽然它们的目标相同,但它们在使用方式和上下文中有一些区别。比较函数比较函数是一类返回布尔值的函数,用于比较两个值的大小或相等性。常见的比较函数包括 =, !=, <, >, <=, 和 >=。这些函数通常用于 SELECT 语句的 WHERE 子句中。-- 使用比较函数SELECT * FROM employeesWHERE salary > 50000;在上述例子中,> 是一个比较函数,用于比较员工薪水是否大于 50000。比较操作符比较操作符是一种允许在表达式中使用的符号,用于执行比较操作。与比较函数不同,比较操作符通常直接嵌套在表达式中。-- 使用比较操作符SELECT * FROM employeesWHERE salary > 50000;在上述例子中,> 是一个比较操作符,与比较函数的使用方式相同。在实践中,比较操作符更为常见,因为它们更直观和简洁。选择何时使用哪种形式通常,比较操作符更为直观和常见,因此在实际查询中,大多数人更愿意使用比较操作符。它...
PostgreSQL 逻辑操作符
在 PostgreSQL 中,逻辑操作符用于执行逻辑运算,例如 AND、OR、NOT 等。这些操作符通常用于 WHERE 子句中的条件表达式,用于过滤数据。以下是一些常见的逻辑操作符:1. AND 操作符 (AND 或 &&)AND 操作符用于组合多个条件,只有当所有条件都为真时,整个表达式才为真。-- 使用 AND 操作符SELECT * FROM employeesWHERE salary > 50000 AND department = 'IT';2. OR 操作符 (OR 或 ||)OR 操作符用于组合多个条件,只要其中一个条件为真,整个表达式就为真。-- 使用 OR 操作符SELECT * FROM employeesWHERE salary > 80000 OR department = 'Sales';3. NOT 操作符 (NOT)NOT 操作符用于否定一个条件,即将真变为假,将假变为真。-- 使用 NOT 操作符SELECT * FROM employeesWHERE NOT department = ...
PostgreSQL 函数和操作符
在 PostgreSQL 中,函数和操作符是数据库中执行操作和计算的基本构建块。函数是一段预定义或用户定义的可重用代码,可以接受参数并返回一个值。操作符是一种允许在表达式中使用的符号或关键字,用于执行各种操作。函数1. 内建函数PostgreSQL 提供了许多内建函数,用于执行各种操作,例如数学运算、字符串操作、日期和时间操作等。-- 使用内建函数SELECT sqrt(25) AS square_root, upper('hello') AS uppercase_text;2. 用户定义函数用户可以创建自定义函数来执行特定的操作。函数可以用 PL/pgSQL、PL/Tcl、PL/Perl、PL/Python 等多种语言编写。-- 创建一个简单的 PL/pgSQL 函数CREATE OR REPLACE FUNCTION add_numbers(a INTEGER, b INTEGER) RETURNS INTEGER AS $$BEGIN RETURN a + b;END;$$ LANGUAGE plpgsql;-- 调用用户定义函数SELECT add_num...
PostgreSQL 伪类型
在 PostgreSQL 中,伪类型是一种特殊的数据类型,通常不存储实际的数据,而是用于表示函数的输入或输出参数,或者用于表达式中的结果。伪类型主要用于提供额外的语法和语义,使得某些函数和表达式更灵活和通用。以下是一些常见的 PostgreSQL 伪类型:1. void: 代表没有实际值。通常用于表示函数没有返回值。 CREATE OR REPLACE FUNCTION my_function() RETURNS void AS $$ BEGIN -- 函数体 END; $$ LANGUAGE plpgsql;2. any 和 anyelement: 代表任何数据类型。这些伪类型通常用于函数的参数或返回类型,允许函数接受或返回任何数据类型。 CREATE OR REPLACE FUNCTION print_value(value anyelement) RETURNS void AS $$ BEGIN RAISE NOTICE 'Value: %', value; END; $$ LANGUAGE plpgsql;...
PostgreSQL pg_lsn 类型
在 PostgreSQL 中,pg_lsn 是一种数据类型,用于表示逻辑日志序列号(Logical Sequence Number)。逻辑日志序列号是 PostgreSQL 中用于跟踪和记录事务修改的一种标识符。pg_lsn 类型主要用于表示 WAL(Write-Ahead Logging,预写式日志)中的逻辑位置。WAL 是 PostgreSQL 使用的一种事务日志系统,用于确保数据库的持久性和一致性。以下是一些关于 pg_lsn 类型的基本操作:创建包含 pg_lsn 类型的表CREATE TABLE change_log ( change_id SERIAL PRIMARY KEY, lsn pg_lsn, description TEXT);在上述示例中,change_id 是一个自增的主键,lsn 列使用了 pg_lsn 类型,用于存储逻辑日志序列号。插入数据INSERT INTO change_log (lsn, description) VALUES ('0/16C4D40', 'Update user informatio...
PostgreSQL 对象标识符类型
在 PostgreSQL 中,对象标识符类型是一种用于存储和引用数据库对象的类型。这包括表、列、索引等数据库中的各种对象。在 PostgreSQL 中,对象标识符类型被称为 oidvector。oidvector 是一个数组类型,用于存储一组对象标识符(OID)。OID 是 PostgreSQL 数据库中每个对象的唯一标识符,每个对象都有一个唯一的OID。oidvector 可以用于存储一组对象的 OID,例如表的 OID 列表。以下是一个简单的使用 oidvector 的示例:-- 创建包含 oidvector 列的表CREATE TABLE object_references ( id SERIAL PRIMARY KEY, referenced_objects OIDVECTOR);-- 插入数据INSERT INTO object_references (referenced_objects) VALUES ('{pg_class, pg_attribute}'::oidvector), ('{pg_index, pg_type}...
PostgreSQL 域类型
在 PostgreSQL 中,域类型(Domain Types)是一种对现有数据类型进行命名和约束的方法。通过使用域类型,你可以创建一个新的类型,它在本质上是对现有类型的包装,并且可以添加额外的约束条件。域类型允许你为特定的业务需求定义自己的数据类型,提高数据模型的可读性和可维护性。以下是创建和使用域类型的一些示例:创建域类型-- 创建一个域类型,限制字符串长度在 1 到 50 之间CREATE DOMAIN username VARCHAR(50) NOT NULL CHECK (LENGTH(VALUE) BETWEEN 1 AND 50);-- 使用域类型的表CREATE TABLE user_account ( user_id SERIAL PRIMARY KEY, username username, email VARCHAR(255));-- 插入数据INSERT INTO user_account (username, email) VALUES ('john_doe', 'john@example.com');在...
PostgreSQL 范围类型
在 PostgreSQL 中,范围类型是一种用于表示某种有序序列的数据范围的类型。范围类型主要用于处理连续的值范围,例如日期范围、数字范围等。PostgreSQL 提供了 tsrange(时间范围)、tstzrange(带时区的时间范围)、int4range(整数范围)等内置的范围类型。以下是一些范围类型的示例:时间范围 (tsrange)-- 创建包含时间范围的表CREATE TABLE event_schedule ( event_name VARCHAR(255), event_time tsrange);-- 插入数据INSERT INTO event_schedule (event_name, event_time) VALUES ('Meeting', '[2023-01-01 10:00:00, 2023-01-01 12:00:00)'), ('Conference', '[2023-02-01 14:00:00, 2023-02-01 18:00:00)');在上述示例中,even...
PostgreSQL 组合类型
在 PostgreSQL 中,组合类型允许你将多个字段组合成一个单独的类型。这在某些情况下很有用,尤其是当你有一组相关的数据需要一起处理时。在 PostgreSQL 中,有两种主要的组合类型:行类型和域类型。行类型(Composite Types)行类型允许你定义包含多个字段的类型。以下是一个示例:-- 创建一个包含行类型的表CREATE TABLE person ( id SERIAL PRIMARY KEY, name VARCHAR(255), birthdate DATE);-- 创建一个使用行类型的表CREATE TABLE employee ( id SERIAL PRIMARY KEY, personal_info person, department VARCHAR(255));-- 插入数据INSERT INTO employee (personal_info, department) VALUES (ROW(1, 'John', '2000-01-01'::DATE), 'IT'...
PostgreSQL 数组
在 PostgreSQL 中,数组是一种用于存储同类型元素的有序集合的数据类型。PostgreSQL 提供了多种数组类型,例如整数数组、文本数组等。以下是一些常见的数组类型和操作:创建包含数组的表CREATE TABLE my_table ( id SERIAL PRIMARY KEY, integer_array INTEGER[], text_array TEXT[]);在上述示例中,创建了一个包含整数数组和文本数组的表。插入数组数据INSERT INTO my_table (integer_array, text_array) VALUES ('{1, 2, 3}', '{"apple", "orange", "banana"}');上述语句将包含整数和文本数组的数据插入表中。查询数组数据SELECT id, integer_array[1] AS first_element, text_array[2] AS second_elementFROM my_table...
PostgreSQL JSON 类型
在 PostgreSQL 中,JSON(JavaScript Object Notation)是一种用于存储和交换数据的文本格式。PostgreSQL 提供了 json 和 jsonb 两种类型来存储 JSON 数据。1. json 类型: 存储 JSON 数据,但保留原始的 JSON 文本格式。在查询时解析 JSON 数据。 -- 示例:创建包含 json 类型的表 CREATE TABLE my_table ( id SERIAL PRIMARY KEY, json_data JSON ); -- 示例:插入 JSON 数据 INSERT INTO my_table (json_data) VALUES ('{"name": "John", "age": 30}'), ('{"name": "Jane", "age": 25}'); 查询时,你可以直接访问 JS...
PostgreSQL XML类型
在 PostgreSQL 中,XML 类型用于存储和处理 XML 文档。XML(可扩展标记语言)是一种用于存储和传输结构化信息的标记语言。PostgreSQL 提供了 xml 类型,可以用于存储包含 XML 数据的列。以下是一些在 PostgreSQL 中使用 XML 类型的基本操作:1. 创建包含 XML 类型的表: CREATE TABLE my_table ( id SERIAL PRIMARY KEY, xml_data XML ); 在上述示例中,创建了一个包含 xml_data 列的表,该列的数据类型为 XML。2. 插入 XML 数据: INSERT INTO my_table (xml_data) VALUES ('<person><name>John</name><age>30</age></person>'), ('<person><name>Jane</name><...
PostgreSQL UUID类型
在 PostgreSQL 中,UUID(通用唯一标识符)是一种用于表示唯一标识符的数据类型。UUID 是一个128位的数字,通常以 32 个十六进制字符的形式表示,并具有全球唯一性。在 PostgreSQL 中,UUID 类型用于存储 UUID 值,主要有两个相关的类型:uuid 和 uuid-ossp 扩展。1. uuid 类型: PostgreSQL 提供了内建的 uuid 类型,可以用于存储 UUID 值。 -- 例如,表示一个 UUID '123e4567-e89b-12d3-a456-426614174001'::uuid2. uuid-ossp 扩展: PostgreSQL 提供了一个名为 uuid-ossp 的扩展,它包含了一些函数,用于生成和操作 UUID。 - 生成 UUID: -- 生成一个随机 UUID SELECT uuid_generate_v4(); 上述语句使用 uuid-ossp 扩展的 uuid_generate_v4 函数生成一个随机的 UUID。 - 引入扩展: -- 在数据库中引入 ...
PostgreSQL 文本搜索类型
在 PostgreSQL 中,文本搜索类型主要用于支持全文搜索和文本检索的功能。其中,最常见的文本搜索类型是 tsvector 和 tsquery。1. tsvector 类型: 用于存储被索引的文档的词汇和位置信息。 -- 例如,表示一个包含文本索引信息的 tsvector 'english'::tsvector 在上述示例中,'english'::tsvector 表示一个使用英语文本搜索配置的 tsvector。2. tsquery 类型: 用于表示文本搜索查询的结构。 -- 例如,表示一个文本搜索查询 'cat & dog'::tsquery 在上述示例中,'cat & dog'::tsquery 表示一个查询,要求包含同时包含 "cat" 和 "dog" 两个词的文档。文本搜索类型通常与全文搜索索引一起使用,以便有效地执行文本搜索操作。在 PostgreSQL 中,有一个称为 tsvector 的函数,用于将文本字段转换为 tsvec...
PostgreSQL 位串类型
在 PostgreSQL 中,位串类型用于存储位(bit)序列。有两种主要的位串类型:bit 和 varbit。1. bit 类型: 用于存储定长的位序列,即位串的长度是固定的。 -- 例如,表示一个8位的二进制串 bit '01010101' 在上述示例中,bit '01010101' 表示一个包含8个位的二进制串。2. varbit 类型: 用于存储可变长度的位序列,即位串的长度是可变的。 -- 例如,表示一个可变长度的二进制串 varbit '01010101' 与bit 不同,varbit 类型不要求位串的长度是固定的。这些类型可以用于存储二进制数据,例如位掩码、标志位等。在 PostgreSQL 中,可以执行位串之间的位运算和其他相关操作。以下是一个使用位串类型的简单示例:-- 创建一个包含 bit 和 varbit 列的表CREATE TABLE bits_data ( id SERIAL PRIMARY KEY, fixed_bits BIT(8), variable_bits VA...