Порівняння

Предикати порівняння

datatype BETWEEN datatype AND datatype

Перевірка, чи знаходиться значення в межах кінцевих точок діапазону (включно)

2 BETWEEN 1 AND 3 -- true
2 BETWEEN 3 AND 1 -- false
datatype NOT BETWEEN datatype AND datatype

Не між (заперечення ПОМІЖ).

2 NOT BETWEEN 1 AND 3 -- false
datatype BETWEEN SYMMETRIC datatype AND datatype

Між, після сортування двох кінцевих значень.

2 BETWEEN SYMMETRIC 3 AND 1 -- true
datatype NOT BETWEEN SYMMETRIC datatype AND datatype

Не між, після сортування двох кінцевих значень.

2 NOT BETWEEN SYMMETRIC 3 AND 1 -- false
datatype IS DISTINCT FROM datatype

Не дорівнює, розглядаючи нуль як порівнянне значення.

1 IS DISTINCT FROM NULL -- true (rather than NULL)
NULL IS DISTINCT FROM NULL -- false (rather than NULL)
datatype IS NOT DISTINCT FROM datatype

Дорівнює, розглядаючи нуль як порівнянне значення.

1 IS NOT DISTINCT FROM NULL -- false (rather than NULL)
NULL IS NOT DISTINCT FROM NULL -- true (rather than NULL)
datatype IS NULL

Перевірити, чи значення рівне нулю.

1.5 IS NULL -- false
datatype IS NOT NULL

Перевірити, чи значення не рівне нулю.

'null' IS NOT NULL -- true
datatype ISNULL

Перевірити, чи значення рівне нулю (нестандартний синтаксис).

datatype NOTNULL

Перевірити, чи значення не є null (нестандартний синтаксис).

boolean IS TRUE

Перевірте, чи дає булевий вираз значення true.

true IS TRUE -- true
NULL::boolean IS TRUE -- false (rather than NULL)
boolean IS NOT TRUE

Перевірте, чи дає булевий вираз значення false або невідоме.

true IS NOT TRUE -- false
NULL::boolean IS NOT TRUE -- true (rather than NULL)
boolean IS FALSE

Перевірте, чи дає булевий вираз значення false.

true IS FALSE -- false
NULL::boolean IS FALSE -- false (rather than NULL)
boolean IS NOT FALSE

Перевірте, чи дає булевий вираз значення true або unknown.

true IS NOT FALSE -- true
NULL::boolean IS NOT FALSE -- true (rather than NULL)
boolean IS UNKNOWN

Перевірити, чи дає булевий вираз невідоме.

true IS UNKNOWN -- false
NULL::boolean IS UNKNOWN -- true (rather than NULL)
boolean IS NOT UNKNOWN

Перевірте, чи дає булевий вираз значення true або false.

true IS NOT UNKNOWN -- true
NULL::boolean IS NOT UNKNOWN -- false (rather than NULL)

Функції порівняння

num_nonnulls(VARIADIC "any")

Повертає кількість ненульових аргументів

SELECT num_nonnulls(1, NULL, 2) -- return 2
num_nulls(VARIADIC "any")

Повертає кількість нульових аргументів

SELECT num_nulls(1, NULL, 2) -- return 1

Математичні функції та оператори

numeric_type + numeric_type

Додавання

SELECT 2 + 3 -- returns 5
+ numeric_type

Унарний плюс (без операції)

SELECT + 3.5 -- returns 3.5
numeric_type - numeric_type

Віднімання

SELECT 2 - 3 -- returns -1
- numeric_type

Заперечення

SELECT - (-4) -- returns 4
numeric_type * numeric_type

Множення

SELECT 2 * 3 -- returns 6
numeric_type / numeric_type

Ділення (для інтегральних типів ділення усікає результат до нуля)

SELECT 5.0 / 2 -- returns 2.5000000000000000

SELECT 5 / 2 -- returns 2

SELECT (-5) / 2 -- returns -2
numeric_type % numeric_type

За модулем (залишок); доступний для smallint, integer, bigint та numeric

SELECT 5 % 4 -- returns 1
numeric ^ numeric
double precision ^ double precision

Піднесення до степеня

SELECT 2 ^ 3 -- returns 8

На відміну від типової математичної практики, багаторазове використання ^ за замовчуванням асоціюється зліва направо:

SELECT 2 ^ 3 ^ 3 -- returns 512
SELECT 2 ^ (3 ^ 3) -- returns 134217728
|/ double precision

Квадратний корінь

SELECT |/ 25.0 -- returns 5
||/ double precision

Кубічний корінь

SELECT ||/ 64.0 -- returns 4
@ numeric_type

Абсолютне значення

SELECT @ -5.0 -- returns 5.0
integral_type & integral_type

Побітове І

SELECT 91 & 15 -- returns 11
integral_type | integral_type

Порозрядне АБО

SELECT 32 | 3 -- returns 35
integral_type # integral_type

Побітове виключне АБО

SELECT 17 # 5 -- returns 20
~ integral_type

Побітове НІ

SELECT ~1 -- returns -2
integral_type << integer

Порозрядний зсув вліво

SELECT 1 << 4 -- returns 16
integral_type >> integer

Порозрядний зсув вправо

SELECT 8 >> 2 -- returns 2