English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL 運算符

Un operatore è un simbolo che informa il compilatore di eseguire un'operazione matematica o logica specifica.

L'operatore PostgreSQL è una parola riservata o carattere, generalmente utilizzato nelle espressioni WHERE, come condizione di filtraggio.

Operatori comuni includono:

  • Operatore aritmetico

  • Operatore di confronto

  • (2 rows)

  • Operatore di bit

Operatore aritmetico

Supponiamo che la variabile a sia 2 e la variabile b sia 3, allora:

OperatoreDescrizioneEsempio
+ Aggiungerea + b il risultato è 5
-Sottrarrea - b il risultato è -1
*Moltiplicarea * b il risultato è 6
/Dividereb / a il risultato è 1
%Modulo (rimborso)b % a il risultato è 1
^Esponentea ^ b il risultato è 8
|/Radice quadrata|/ 25.0 il risultato è 5
||/Radice cubica||/ 27.0 il risultato è 3
!Fattoriale5 ! il risultato è 120
!!Fattoriale (operatore prefisso)!! 5 il risultato è 120

Esempio online

w3codeboxdb=# select 2+3;
 ?colonna?
----------
        5
(1 riga)
w3codeboxdb=# select 2*3;
 ?colonna?
----------
        6
(1 riga)
w3codeboxdb=# select 10/5;
 ?colonna?
----------
        The WHERE clause in PostgresSQL can include multiple filtering conditions with AND.
(1 riga)
w3codeboxdb=# select 12%5;
 ?colonna?
----------
        The WHERE clause in PostgresSQL can include multiple filtering conditions with AND.
(1 riga)
w3codeboxdb=# select 2^3;
 ?colonna?
----------
        8
(1 riga)
w3codeboxdb=# select |/ 25.0;
 ?colonna?
----------
        5
(1 riga)
w3codeboxdb=# select ||/ 27.0;
 ?colonna?
----------
        PostgresSQL has NOT EXISTS, NOT BETWEEN, NOT IN and other operators.
(1 riga)
w3codeboxdb=# select 5 !;
 ?colonna?
----------
      120
(1 riga)
w3codeboxdb=# select !!5;
 ?colonna?
----------
      120
(1 riga)

Operatore di confronto

Supponiamo che la variabile a sia 10 e la variabile b sia 20, allora:

OperatoreDescrizioneEsempio
=Uguale a(a = b) è false.
!=Diverso da(a != b) è true.
<>Diverso da(a <> b) è true.
>Maggiore di(a > b) è false.
<Minore di(a < b) è true.
>= Maggiore o uguale a(a >= b) è false.
<=Minore o uguale a(a <= b) è true.

Esempio online

Il contenuto del file COMPANY.SQL è il seguente:

-- This is the file to create COMPANY table and to populate it with 7 records.
-- Just copy and paste them on psql prompt.
DROP TABLE COMPANY;
CREATE TABLE COMPANY;
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00);
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);

Crea la tabella COMPANY con il seguente contenuto di dati:

w3codeboxdb=# select * from COMPANY;
 id | name | age | address | salary
----+-------+-----+-----------+--------
  1 | Paul | 32 | California | 20000
  2 | Allen | 25 | Texas | 15000
  3 | Teddy | 23 | Norway | 20000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
  6 | Kim | 22 | South-Hall | 45000
  7 | James | 24 | Houston | 10000
(7 rows)

Leggi i dati del campo SALARY maggiore di 50000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY > 50000;
 id | name | age | address | salary
----+-------+-----+-----------+--------
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
(2 rows)

Leggi i dati del campo SALARY uguale a 20000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY = 20000;
 id | name | age | address | salary
 ----+-------+-----+-------------+--------
   1 | Paul | 32 | California | 20000
   3 | Teddy | 23 | Norway | 20000
(2 rows)

Leggi i dati del campo SALARY diverso da 20000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY != 20000;
 id | name | age | address | salary
----+-------+-----+-------------+--------
  2 | Allen | 25 | Texas | 15000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
  6 | Kim | 22 | South-Hall | 45000
  7 | James | 24 | Houston | 10000
(5 righe)
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY <> 20000;
 id | name | age | address | salary
----+-------+-----+------------+--------
  2 | Allen | 25 | Texas | 15000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
  6 | Kim | 22 | South-Hall | 45000
  7 | James | 24 | Houston | 10000
(5 righe)

Leggi i dati del campo SALARY maggiore o uguale a 65000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY >= 65000;
 id | name | age | address | salary
----+-------+-----+-----------+--------
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
(2 rows)

(2 rows)

Logical Operators

PostgreSQL has the following logical operators:Serial Number
1

SQL uses a three-valued logic system, including true, false and null, where null represents 'unknown'.

Operator & Description

Logical AND operator. If both operands are non-zero, the condition is true.



The WHERE clause in PostgresSQL can include multiple filtering conditions with AND.

NOT

2

Logical NOT operator. It reverses the logical state of the operand. If the condition is true, the logical NOT operator will make it false.
PostgresSQL has NOT EXISTS, NOT BETWEEN, NOT IN and other operators.

OR

3

Logical OR operator. If either of the operands is non-zero, the condition is true.

The WHERE clause in PostgresSQL can include multiple filtering conditions with OR.

aba SQL uses a three-valued logic system, including true, false and null, where null represents 'unknown'. ba OR b
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
TRUENULLNULLTRUE
FALSEFALSEFALSEFALSE
FALSENULLFALSENULL
NULLNULLNULLNULL
aNOT a
TRUEFALSE
FALSETRUE
NULLNULL

Esempio online

COMPANY.SQL file content as follows:

-- This is the file to create COMPANY table and to populate it with 7 records.
-- Just copy and paste them on psql prompt.
DROP TABLE COMPANY;
CREATE TABLE COMPANY;
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00);
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);

Crea la tabella COMPANY con il seguente contenuto di dati:

w3codeboxdb=# select * from COMPANY;
 id | name | age | address | salary
----+-------+-----+-----------+--------
  1 | Paul | 32 | California | 20000
  2 | Allen | 25 | Texas | 15000
  3 | Teddy | 23 | Norway | 20000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
  6 | Kim | 22 | South-Hall | 45000
  7 | James | 24 | Houston | 10000
(7 rows)

Leggi i dati con il campo AGE maggiore o uguale a 25 e il campo SALARY maggiore o uguale a 6500:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 6500;
 id | name | age | address | salary
----+-------+-----+-----------------------------------------------+--------
  1 | Paul | 32 | California | 20000
  2 | Allen | 25 | Texas | 15000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
(4 righe)

Leggi i dati del campo AGE >= 25 o del campo SALARY >= 6500:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 6500;
 id | name | age | address | salary
----+-------+-----+-------------+--------
  1 | Paul | 32 | California | 20000
  2 | Allen | 25 | Texas | 15000
  3 | Teddy | 23 | Norway | 20000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
  6 | Kim | 22 | South-Hall | 45000
  7 | James | 24 | Houston | 10000
  8 | Paul | 24 | Houston | 20000
  9 | James | 44 | Norway | 5000
 10 | James | 45 | Texas | 5000
(10 righe)

Leggi i dati del campo SALARY non NULL:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY IS NOT NULL;
 id | name | age | address | salary
----+-------+-----+-------------+--------
  1 | Paul | 32 | California | 20000
  2 | Allen | 25 | Texas | 15000
  3 | Teddy | 23 | Norway | 20000
  4 | Mark | 25 | Rich-Mond | 65000
  5 | David | 27 | Texas | 85000
  6 | Kim | 22 | South-Hall | 45000
  7 | James | 24 | Houston | 10000
  8 | Paul | 24 | Houston | 20000
  9 | James | 44 | Norway | 5000
 10 | James | 45 | Texas | 5000
(10 righe)

Operatori di bit

Gli operatori di bit agiscono sui bit e eseguono operazioni bit per bit. La tabella di verità degli operatori di bit è come segue:

pqp & qp | q
0000
0101
1111
1001

Supponiamo che A = 60 e B = 13, rappresentati in formato binario, sono come segue:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

La tabella mostra gli operatori di bitwise supportati da PostgreSQL. Supponiamo che la variabile A con un valore di 60, variabile B con un valore di 13, allora:

OperatoreDescrizioneEsempio
&

Operazione AND bit a bit, esegue l'operazione AND sui bit binari. Regole di calcolo:

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
(A & B) darà 12, che è 0000 1100
|

Operatore di OR bit a bit, esegue l'operazione OR sui bit binari. Regole di calcolo:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
(A | B) darà 61, che è 0011 1101
#

Operatore di XOR, esegue l'operazione XOR sui bit binari. Regole di calcolo:

0#0=0;   
0#1=1;   
1#0=1;  
1#1=0;
(A # B) darà 49, che è 0011 0001
~

Operatore di negazione, esegue l'operazione di negazione sui bit binari. Regole di calcolo:

~1=0;   
~0=1;
(~A) darà -61, che è 1100 0011, la forma di complemento a due di un numero binario con segno.
<<Operatore di spostamento a sinistra binario. Sposta tutti i bit di un oggetto di calcolo di un certo numero di posizioni a sinistra (i bit di sinistra vengono scartati e quelli di destra riempiti con 0).A << 2 darà 240, che è 1111 0000
>>Operatore di spostamento a destra binario. Sposta tutti i bit di un numero di un certo numero di posizioni a destra, i numeri positivi vengono riempiti a sinistra con 0 e i numeri negativi con 1, e i bit di destra vengono scartati.A >> 2 darà 15, che è 0000 1111

Esempio online

w3codeboxdb=# select 60 | 13;
 ?colonna?
----------
       61
(1 riga)
w3codeboxdb=# select 60 & 13;
 ?colonna?
----------
       12
(1 riga)
w3codeboxdb=# select (~60);
 ?colonna?
----------
      -61
(1 riga)
w3codeboxdb=# select (60 << 2);
 ?colonna?
----------
      240
(1 riga)
w3codeboxdb=# select (60 >> 2);
 ?colonna?
----------
       15
(1 riga)
w3codeboxdb=# select 60 # 13;
 ?colonna?
----------
       49
(1 riga)