ืขืก ืืื ืืึธืจื ืืฉื ืกืึทืกืคึผืืฉืึทืก ืืืขืื ืืืืขืจ ืืืืกืืขื. ืืขืจืฆื, ืืื ืืคืืื ืืืกืงืืืขื ืืึทืงืึทื ื ืฆื ืืืจ ืืขืืื ื ืืื ืคึฟืึทืจ ืึท ืืึทื ื ืฆืืึทื. ืืืขืจ ืึทื ืก ื ืึธืจ ืืื ืืืจ ืืฉืขืง ืืื. ืืึธืก ืืื ืืื ืืื ืืืืึทืื ืืืืขืจ ืื ืกืืืืึทืก ื ืึทืืืจ, ืืจืืขืื ืืึธืจ ืึทื ืืขืจืฉ ืืื ืืืจ ืืขืจืืืึทืจื. ืืื ืืื ืืื ืืึธื ืขืคึผืขืก ืืืึธืก ืืืื ืืืื ืืึธืจ ืฉืืืื ืืืืฃ ืกืืฃ - ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืื ืคืึทืจืืืจื ืกืื ืืึทืื ืขื ืืจืึทืกืืื ืฆื ืืื. ืืืขื ืืืจ ืงืึธื ืคืจืึธื ืืืจื ืืื, ืืื ืคืึธืืขืจื ืึทื ืืื ืงืขื ืขื ื ืืฉื ืืขืืขืจ ืื ืืขืจืขืจ, โโืืึธืืฉ ืืื ืื ืฉืึทืืึธืื ืืื ืึทืจืืขืื ืฉืืืขืจ ืืื ืืขืจ ืืขืจ ืืขืืืืงืขืจ ืงืึทืคึผืืขืจ. ืขืก ืก ืฆืืึทื ืฆื ืืขืกืึธืฃ ืืจืขื ืืขื ืืื ืฆื ืจืืื ืืืึทืกืขืจ. ืืึธืืืจ ืืื ืืืื ืืึทืืึทื ืืืขื ืืื ืื ืกืึทืกืคึผืืฉืึทืก ืืืืคึผืก.
ืืึทืื ืืืืคึผืื ื ืืื PostgreSQL, ืคึฟืึทืจ ืึทืืข ืืืึทื ืืึธืืืง, ืืื ืืื ืืืืขืจ ืืึธืื ืข ืกืึทืคึผืจืืืืื. ืืื ืืขื ืึทืจืืืงื, ืืืจ ืืืขืื ืคึผืจืืืืจื ืฆื ืืขืจืงืืขืจื ืขืืืขืืข ืคืื โโโโืืืืขืจ ืงืืืขืจืงืก, ืคึฟืึทืจืฉืืืื ืื ืกืืื ืคึฟืึทืจ ืืืืขืจ ืืึธืื ืข ื ืึทืืืจ ืืื ืคึฟืึทืจืฉืืืื ืืื ื ืืฉื ืฆื ืืืืคื ืืื ืคึผืจืึธืืืขืืก ืืื ืืืึธืืขืืืง ืคืืจ. ืืขื ืืืช ืืึธืื, ืืึธื ืืื ืฆืื ืืืคึฟืืขืฉืืขืื ืืขื ืึทืจืืืงื ืืืื ืืื ืึท ืืื ืจืขืคึฟืขืจืขื ืฅ ืืื ืคึฟืึทืจ ืืื, ืึท ืจืขืคึฟืขืจืขื ืฅ ืืื, ืืืึธืก ืืขื ืงืขื ืืจืื ื ืืึทืืืฒึทืื ืืื ืงืึธื ืืจืึธืืืขืจืกืืึทืืข ืคึฟืึทืื. ืืขืจืืืขืจ, ืขืก ืืืขื ืืืื ืจืืคึผืืขื ืืฉื ืืื ื ืืึท ืกืึทืคึผืจืืืืื ืคืื ืกืึทืกืคึผืืฉืึทืก ืืืืคึผืก ืืขื ืขื ืืืกืงืึทืืืขืจื. ืึทืืื, ืืึธืื ืืื ืื ืืืื, ืืึทืงืข ืืืืขืจืืึทืก ืืึทืืึทืืืืก ืืจืึทืงืขืจื!
ืืึธืืข ื ืืืขืจ ืืืื. ืคืึทืงืืืฉ / ืืึธืคึผื ืคึผืื ืืืขืืงืืึทื / โโื ืืืขืจืืง / ืืขืื
ืขืก ืืืึธืื ืืืกืงืืืขื ืึทื ื ืืืขืจืืง ืืืืคึผืก ืืขื ืขื ืื ืงืืขื ืกืืขืจ ืคึผืจืึธืืืขืืึทืืืง ืืื ืืขืจืืื ืขื ืคืื ืกืึทืคึผืจืืืืื ืืื ื ืึทืืืจ. ืืืขืจ ืงืืื ืขื ืื ืืื ืขืก ืืื. ืึทืืื ืืึธืื ืก ืึธื ืืืืื ืืื ืืื. ืึทืืืโฆ
ืคืืจืืขืกื ืืื ืฆื ืฆืืืื
SELECT 0.1::real = 0.1
?column?
boolean
---------
f
ืืืืก ืืื ืื ืืขืฉื? ืืขืจ ืคึผืจืึธืืืขื ืืื ืึทื PostgreSQL ืงืึทื ืืืขืจืฅ ืื ืื ืืืคึผืขื ืงืขืกืืืืขืจืืืง 0.1 ืฆื ืืึธืคึผื ืคึผืื ืืืขืืงืืึทื ืืื ืคืจืืืื ืฆื ืคืึทืจืืืืึทืื ืขืก ืืื 0.1 ืคืื ืคืึทืงืืืฉ ืืืคึผ. ืืื ืืึธืก ืืขื ืขื ืืึธืจ ืคืึทืจืฉืืืขื ืข ืืื ืื ืื! ืืขืจ ืืขืืึทื ืง ืืื ืฆื ืคืึธืจืฉืืขืื ืคืึทืงืืืฉ ื ืืืขืจื ืืื ืืึทืฉืื ืืึผืจืื. ืืื ื 0.1 ืงืขื ืขื ื ืื ืืืื ืจืขืคึผืจืืืขื ืืื ืืื ืึท ืขื ืืืขื ืืืื ืขืจื ืืจืึธืืฆืึธื (ืขืก ืืืึธืื ืืืื 0.0 (0011) ืืื ืืืื ืขืจื), ื ืืืขืจื ืืื ืคืึทืจืฉืืืขื ืข ืืืกื ืืืคืขื ืืฉื ืืืขื ืืืื ืึทื ืืขืจืฉ, ืืขืจ ืจืขืืืืืึทื ืึทื ืืื ืืขื ืขื ื ืืฉื ืืืืึทื. ืืื ืึทืืืขืืืื, ืืึธืก ืืื ืึท ืืขืืข ืคึฟืึทืจ ืึท ืืึทืืื ืืขืจ ืึทืจืืืงื, ืืื ืืืขื ื ืืฉื ืฉืจืืึทืื ืืขืจ ืืขืืึทื ืืึธ.
ืคึฟืื ืืืึทื ืขื ืงืืื ืืขืจ ืืขืืช?
SELECT double precision(1)
ERROR: syntax error at or near "("
LINE 1: SELECT double precision(1)
^
********** ะัะธะฑะบะฐ **********
ERROR: syntax error at or near "("
SQL-ัะพััะพัะฝะธะต: 42601
ะกะธะผะฒะพะป: 24
ืคืืืข ืืขื ืืฉื ืืืืกื ืึทื PostgreSQL ืึทืืึทืื ืคืึทื ืืงืฉืึทื ืึทื ื ืึธืืืืืฉืึทื ืคึฟืึทืจ ืืืคึผ ืงืึทืกืืื ื. ืึทื ืืื, ืืืจ ืงืขื ืขื ืฉืจืืึทืื ื ืื ืืืืื 1::ืื ื, ืึธืืขืจ ืืืื ืื ื (1), ืืืึธืก ืืืขื ืืืื ืขืงืืืืืืึทืืขื ื. ืืืขืจ ื ืืฉื ืคืืจ ืืืคื ืืืขืืขื ืก ื ืขืืขื ืืืฉืืืื ืคืื ืขืืืืืข ืืืขืจืืขืจ! ืืขืจืืืขืจ, ืืืื ืืืจ ืืืืื ืฆื ืืืึทืจืคื ืึท ื ืืืขืจืืง ืืืขืจื ืฆื ืืึธืคึผื ืคึผืื ืืืขืืงืืึทื ืืืคึผ ืืื ืคืึทื ืืงืฉืึทื ืึทื ืคืึธืจืขื, ื ืืฆื ืื ืึทืืืึทืก ืคืื ืืขื ืืืคึผ float8, ืืึธืก ืืื SELECT float8 (1).
ืืืึธืก ืืื ืืจืขืกืขืจ ืืื ืื ืืืขื ืืืงืืึทื?
SELECT 'Infinity'::double precision < 'NaN'::double precision
?column?
boolean
---------
t
ืงืืง ืืื ืขืก ืืื! ืขืก ืืืจื ืก ืืืืก ืึทื ืขืก ืืื ืขืคึผืขืก ืืืืขืจ ืืื ืืืขื ืืืงืืึทื, ืืื ืขืก ืืื NaN! ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืื PostgreSQL ืืึทืงืืืืขื ืืืืฉืึทื ืงืืงื ืืืืฃ ืืื ืื ืืื ืขืจืืขื ืืืืื ืืื ืงืืืืื ืึทื NaN ืืื ืืึธื ืืจืขืกืขืจ ืืื ืงืืื ืื ืืขืจืข ื ืืืขืจ, ืืื, ืืขืจืืืขืจ, ืืืขื ืืืงืืึทื. ืืขืจ ืคืึทืจืงืขืจื ืืื ืืืื ืืืช ืคึฟืึทืจ -ื ืึทื. ืืขืื, ืืืืขืืืืืง ืืืืืืืขืจืก! ืืืขืจ ืืืจ ืืืื ืืขืืขื ืงืขื ืึทื ืึทืืข ืืขื ืึทืคึผืขืจืืืฅ ืืื ืืขื ืงืึธื ืืขืงืกื ืคืื ืคืึทืงืืืฉ ื ืืืขืจื.
ืืืื ืจืึทืื ืืื ื
SELECT round('2.5'::double precision)
, round('2.5'::numeric)
round | round
double precision | numeric
-----------------+---------
2 | 3
ืื ืื ืืขืจ ืืืืืขืจืืื ืืจืืก ืคืื ืืขืจ ืืึทืืข. ืืืืืขืจ, ืืขืืขื ืงืขื ืึทื ืืึธืคึผื ืคึผืื ืืืขืืงืืึทื ืืื ื ืืืขืจืืง ืืืืคึผืก ืืึธืื ืคืึทืจืฉืืืขื ืข ืจืึทืื ืืื ื ืืคืขืงืฅ. ืคึฟืึทืจ ื ืืืขืจืืง - ืื ืืขืืืืื ืืืขื ืืืื ืขืจ, ืืืขื 0,5 ืืื ืจืึทืื ืืื ืึทืจืืืฃ, ืืื ืคึฟืึทืจ ืืึธืคึผื ืคึผืื ืืืขืืงืืึทื - 0,5 ืืื ืจืึทืื ืืื ืฆื ืื ื ืืจืึทืกื ืืคืืื ืื ืืึทืืืฉืขืจ.
ืืขืื ืืื ืขืคึผืขืก ืกืคึผืขืฆืืขื
SELECT '10'::money::float8
ERROR: cannot cast type money to double precision
LINE 1: SELECT '10'::money::float8
^
********** ะัะธะฑะบะฐ **********
ERROR: cannot cast type money to double precision
SQL-ัะพััะพัะฝะธะต: 42846
ะกะธะผะฒะพะป: 19
ืืืื PostgreSQL, ืืขืื ืืื ื ืืฉื ืึท ืคืึทืงืืืฉ ื ืืืขืจ. ืืืื ืขืืืขืืข ืืืืืื ืืืื. ืืืจ ืืึทืจืคึฟื ืฆื ืืขืืขื ืงืขื ืึทื ืงืึทืกืืื ื ืื ืืขืื ืืืคึผ ืืื ืืืืื ืืขืืืขื ืฆื ืื ื ืืืขืจืืง ืืืคึผ, ืคึผืื ืงื ืืื ืืืืื ืื ื ืืืขืจืืง ืืืคึผ ืงืขื ืขื ืืืื ืืืึทืจืคื ืฆื ืื ืืขืื ืืืคึผ. ืึธืืขืจ ืืืฆื ืืืจ ืงืขื ืขื ืฉืคึผืืื ืืื ืืื ืืื ืืืื ืืึทืจืฅ ืืืื. ืืืขืจ ืขืก ืืืขื ื ืืฉื ืืืื ืื ืืขืืืข ืืขืื.
ืกืืึธืืื ื ืืื ืกืืงืืืึทื ืก ืืืจ
SELECT *
FROM generate_series(1::smallint, 5::smallint, 1::smallint)
ERROR: function generate_series(smallint, smallint, smallint) is not unique
LINE 2: FROM generate_series(1::smallint, 5::smallint, 1::smallint...
^
HINT: Could not choose a best candidate function. You might need to add explicit type casts.
********** ะัะธะฑะบะฐ **********
ERROR: function generate_series(smallint, smallint, smallint) is not unique
SQL-ัะพััะพัะฝะธะต: 42725
ะะพะดัะบะฐะทะบะฐ: Could not choose a best candidate function. You might need to add explicit type casts.
ะกะธะผะฒะพะป: 18
PostgreSQL ืืื ื ืืฉื ืืื ืฆื ืืืืกื ืฆืืื ืืืืฃ ืงืืืื ืืงืืืื. ืืืึธืก ืืขื ืขื ืื ืกืืงืืืึทื ืกืื ืืืืืจื ืืืืฃ ืงืืืื? ืื ื, ื ืื ืืืืื ืืงืขืจ! ืืขืจืืืขืจ, ืืืขื ืืืจ ืคึผืจืึผืืื ืฆื ืืืกืคืืจื ืื ืืืืื ืึธื ืคึฟืจืขื, ืื ืืึทืืึทืืึทืกืข ืคืจืืืื ืฆื ืืืึทืจืคื ืกืืึทืจืืื ื ืฆื ืขืืืขืืข ืื ืืขืจืข ืื ืืึทืืืฉืขืจ ืืืคึผ, ืืื ืืขื ืึทื ืขืก ืงืขื ืืืื ืขืืืขืืข ืึทืืึท ืงืึทืกืฅ. ืืืึธืก ืืืึทืจืคื ืฆื ืงืืืึทืื? ืื ืงืขื ืืึธืก ื ืืฉื ืืึทืฉืืืกื, ืืื ืืขืจืืืขืจ ืงืจืึทืฉืื ืืื ืึท ืืขืืช.
ืืขืงืข ื ืืืขืจ ืฆืืืื. "char"/char/varchar/text
ื ื ืืืขืจ ืคืื ืึทืืึทืืื ืืขื ืขื ืืืื ืคืึธืจืฉืืขืื ืืื ืืึทืจืึทืงืืขืจ ืืืืคึผืก. ืืืืืจ ืืื ืืืื ืืืงืขื ืขื.
ืืืึธืก ืืื ืคืื ืืจืืงืก ืืขื ืขื ืืึธืก?
SELECT 'ะะะขะฏ'::"char"
, 'ะะะขะฏ'::"char"::bytea
, 'ะะะขะฏ'::char
, 'ะะะขะฏ'::char::bytea
char | bytea | bpchar | bytea
"char" | bytea | character(1) | bytea
-------+-------+--------------+--------
โจ | xd0 | ะ | xd09f
ืืืึธืก ืคึฟืึทืจ ืึท "ืืฉืึทืจ" ืืื ืืึธืก, ืืืึธืก ืคึฟืึทืจ ืึท ืืืึทืื ืืื ืืึธืก? ืืืจ ืืึธื ื ืื ืืึทืจืคึฟื ืื ... ืืืืึทื ืขืก ืคึผืจืืืขื ืื ืฆื ืืืื ืึท ืคึผืจืึธืกื ืืฉืึทืจ, ืืึธืืฉ ืขืก ืืื ืืื ืฆืืืืจื. ืืื ืขืก ืืื ืืื ืืขืจืฉืืืื ืคืื ืึท ืจืขืืืืขืจ ืืฉืึทืจ, ืืืึธืก ืืื ืึธื ืฆืืืืจื, ืืื ืึทื ืขืก ืึทืืืคึผืืฅ ืืืืื ืืขืจ ืขืจืฉืืขืจ ืืืื ืคืื ืื ืฉืืจืืงื ืคืึทืจืืจืขืืื ื, ืืฉืขืช ืึท ื ืึธืจืืึทื ืืฉืึทืจ ืึทืืืคึผืืฅ ืืขืจ ืขืจืฉืืขืจ ืืึทืจืึทืงืืขืจ. ืืื ืืื ืืืขืจ ืคืึทื, ืืขืจ ืขืจืฉืืขืจ ืืึทืจืึทืงืืขืจ ืืื ืืขืจ ืืจืืื ืคึผ, ืืืึธืก ืืื ืื ืืื ืืงืึธื ืคืึทืจืืจืขืืื ื ื ืขืื 2 ืืืืขืก, ืืื ืขืืืืืึทื ืกื ืืืจื ืงืึทื ืืืขืจืืื ื ืืขืจ ืจืขืืืืืึทื ืฆื ืื ืืืืื ืืืคึผ. ืืื ืื "ืืฉืึทืจ" ืืืคึผ ื ืขืื ืืืืื ืืขืจ ืขืจืฉืืขืจ ืืืื ืคืื ืืขื ืืื ืืงืึธื ืคืึทืจืืจืขืืื ื. ืืขืืึธืื ืืืึธืก ืืื ืืขื ืืืคึผ ืืืจืฃ? ืื PostgreSQL ืืึทืงืืืืขื ืืืืฉืึทื ืืืื ืึทื ืืึธืก ืืื ืึท ืกืคึผืขืฆืืขื ืืืคึผ ืืขื ืืฆื ืคึฟืึทืจ ืกืคึผืขืฆืืขื ืืืืขืจืคืขื ืืฉื. ืึทืืื ืืืจ ืืขื ืขื ืึทื ืืืืงืื ืฆื ืืึทืจืคึฟื ืขืก. ืึธืืขืจ ืงืืง ืืื ืึทืจืฒึทื ืืื ืื ืืืืื, ืืื ืืืจ ืืืขื ื ืืฉื ืืึทืื ืงืืื ืืขืืช ืืืขื ืืืจ ืืจืขืคื ืืื ืืื ืืืื ืกืคึผืขืฆืืขื ื ืึทืืืจ.
ืขืงืกืืจืข ืกืคึผืืืกืึทื. ืืืืก ืคืื ืืขืจืืขื, ืืืืก ืคืื ืืืื ืื ื
SELECT 'abc '::char(6)::bytea
, 'abc '::char(6)::varchar(6)::bytea
, 'abc '::varchar(6)::bytea
bytea | bytea | bytea
bytea | bytea | bytea
---------------+----------+----------------
x616263202020 | x616263 | x616263202020
ื ืขืืขื ืึท ืงืืง ืืื ืืขื ืืืึทืฉืคึผืื ืืขืืขืื. ืืื ืกืคึผืขืฉืื ืงืึธื ืืืขืจืืขื ืึทืืข ืื ืจืขืืืืืึทืื ืฆื ืื ืืืืื ืืืคึผ, ืึทืืื ืึทื ืขืก ืืื ืงืืืจ ืงืขื ืืืง ืืืึธืก ืืื ืืึธืจื. ืืื ืืขื ืขื ืื ืืจืืืืื ื ืกืคึผืืืกืึทื ื ืึธื ืงืึทืกืืื ื ืฆื ืืืึทืจืืฉืึทืจ (6)? ืื ืืึทืงืืืืขื ืืืืฉืึทื ืกืึทืงืกืื ืงืืื ืืืื: "ืืืขื ืงืึทืกืืื ื ืื ืืืขืจื ืคืื ืืึทืจืึทืงืืขืจ ืฆื ืื ืื ืืขืจ ืืึทืจืึทืงืืขืจ ืืืคึผ, ืืจืืืืื ื ืืืืืืกืคึผืืืก ืืื ืึทืืืขืงืืขื ืืืขื." ืืขื ืืึทืจืฃ ืืขืืขื ืงืขื ืืขื ื ืื ืืืืฉืึทืคื. ืืื ืืึธื ืึทื ืืืื ืึท ืฆืืืืจืื ืฉืืจืืงื ืงืขืกืืืืขืจืืืง ืืื ืืืึทืจืคื ืืืืึทื ืฆื ืืืคึผ ืืืึทืจืืฉืึทืจ (6), ืื ืืจืืืืื ื ืกืคึผืืืกืึทื ืืขื ืขื ืืคืืขืืื. ืึทืืขืืืข ืืขื ืขื ืื ื ืกืื.
ืืขืงืข ื ืืืขืจ ืืจืื. json/jsonb
JSON ืืื ืึท ืืึทืืื ืืขืจ ืกืืจืืงืืืจ ืืืึธืก ืืขืื ืืืื ืืืืืขื ืข ืืขืื. ืืขืจืืืขืจ, ืื ืขื ืืืืื ืืื ืื ืคืื PostgreSQL ืืขื ืขื ืึท ืืืกื ืึทื ืืขืจืฉ. ืืึธ ืืขื ืขื ืืืืฉืคืืื.
ืืฉืื ืกืื ืืื ืืฉืื ืกืื. ืคืืื ืื ืืืืืง
SELECT 'null'::jsonb IS NULL
?column?
boolean
---------
f
ืื ืืึทื ืืื ืึทื JSON ืืื ืืืื ืืืืืขื ืข ื ืึทื ืขื ืืืื, ืืืึธืก ืืื ื ืืฉื ืืขืจ ืึทื ืึทืืึธื ืคืื NULL ืืื PostgreSQL. ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืื JSON ืืืืคืขืฅ ืืื ืงืขื ืืึธืื ืื ืืืขืจื NULL, ืึทืืื ืืขืจ ืืืืกืืจืืง SELECT null :: jsonb IS NULL (ืืึธื ืื ืคืขืื ืคืื ืืืื ืฆืืืืจื) ืืืขื ืฆืืจืืงืงืืืขื ืืืช ืืึธืก ืืึธื.
ืืืื ืืจืืื ืขื ืืขืจื ืึทืืฅ
SELECT '{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}'::json
json
json
------------------------------------------------
{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}
---
SELECT '{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}'::jsonb
jsonb
jsonb
--------------------------------
{"1": [7, 8, 9], "2": [4, 5, 6]}
ืื ืืึทื ืืื ืึทื json ืืื jsonb ืืขื ืขื ืืึธืจ ืคืึทืจืฉืืืขื ืข ืกืืจืึทืงืืฉืขืจื. ืืื json, ืื ืืืืคืขืฅ ืืื ืกืืึธืจื ืืื ืืื, ืืื ืืื jsonb ืขืก ืืื ืฉืืื ืกืืึธืจื ืืื ืื ืคืึธืจืขื ืคืื ืึท ืคึผืึทืจืกืขื, ืื ืืขืงืกื ืกืืจืืงืืืจ. ืืขืจืคึฟืึทืจ ืืื ืืื ืื ืฆืืืืืืข ืคืึทื ืื ืืืขืจื ืคืื ืื ืืืืคืขืฅ ืืืจื ืฉืืืกื 1 ืจืืคึผืืืืกื ืคืื [1, 2, 3] ืฆื [7, 8, 9], ืืืึธืก ืืื ืืขืงืืืขื ืืื ืื ืกืืจืืงืืืจ ืืื ืื ืกืืฃ ืืื ืื ืืขืืืข ืฉืืืกื.
ื ืื ืืจืื ืงืขื ืืืึทืกืขืจ ืคืื ืืืื ืคึผื ืื
SELECT '{"reading": 1.230e-5}'::jsonb
, '{"reading": 1.230e-5}'::json
jsonb | json
jsonb | json
------------------------+----------------------
{"reading": 0.00001230} | {"reading": 1.230e-5}
PostgreSQL ืืื ืืืื JSONB ืืืคึผืืึทืืขื ืืืืฉืึทื ืขื ืืขืจืื ืืขื ืื ืคืึธืจืืึทืืืื ื ืคืื ืคืึทืงืืืฉ ื ืืืขืจื, ืืจืขื ืืขื ืืื ืฆื ืื ืงืืืกืืฉืข ืคืึธืจืขื. ืืึธืก ืงืขื ื ืืฉื ืคึผืึทืกืืจื ืคึฟืึทืจ ืื JSON ืืืคึผ. ื ืืืกื ืืึธืื ืข, ืึธืืขืจ ืขืจ ืืื ืจืขืื.
ืืขืงืข ื ืืืขืจ ืคืืจ. ืืึทืืข / ืฆืืื / ืฆืืื ืฉืืขืืคึผื
ืขืก ืืขื ืขื ืืืื ืขืืืขืืข ืึทืืึทืืื ืืื ืืึทืืข / ืฆืืื ืืืืคึผืก. ืืื ืก ืงืืง ืืืึท ืืื. ืืึธืื ืืืจ ืืึทืื ืึท ืจืขืืขืจืืืึทืฆืืข ืืืืื ืึทื ืขืืืขืืข ืคืื โโโโืื ื ืึทืืืจืึทื ืคึฟืขืึดืงืืืื ืืืขืจื ืงืืึธืจ ืืืื ืืืจ ืคึฟืึทืจืฉืืืื ืื ืขืกืึทื ืก ืคืื ืืจืืขืื ืืื ืฆืืื ืืึธื ืขืก. ืืืขืจ ืืึธืก ืืื ืืืื ืึท ืืขืืข ืคึฟืึทืจ ืึท ืืึทืืื ืืขืจ ืึทืจืืืงื.
ืืืึทื ืืืื ืก ืืึธื ื ืื ืคึฟืึทืจืฉืืืื
SELECT '08-Jan-99'::date
ERROR: date/time field value out of range: "08-Jan-99"
LINE 1: SELECT '08-Jan-99'::date
^
HINT: Perhaps you need a different "datestyle" setting.
********** ะัะธะฑะบะฐ **********
ERROR: date/time field value out of range: "08-Jan-99"
SQL-ัะพััะพัะฝะธะต: 22008
ะะพะดัะบะฐะทะบะฐ: Perhaps you need a different "datestyle" setting.
ะกะธะผะฒะพะป: 8
ืขืก ืืืึธืื ืืืกืงืืืขื ืึทื ืืืึธืก ืืื ืืืืืึทืงืึทื ื ืืึธ? ืืืขืจ ืื ืืึทืืึทืืืืก ื ืึธื ืืื ื ืืฉื ืคึฟืึทืจืฉืืืื ืืืึธืก ืืืจ ืฉืืขืื ืืื ืขืจืฉืืขืจ ืึธืจื ืืึธ - ืื ืืึธืจ ืึธืืขืจ ืื ืืึธื? ืืื ืื ืืึทืฉืืึธืกื ืึทื ืขืก ืืื 99 ืืื ืืืจ 2008, ืืืึธืก ืืืึธืื ืืืจ ืืืื ืื ื. ืืื ืึทืืืขืืืื, ืืืขื ืืจืึทื ืกืืืืื ื ืืึทืืขืก ืืื ืืขืงืกื ืคึฟืึธืจืืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืขืจ ืงืขืจืคืึทืื ืงืึธื ืืจืึธืืืจื ืืื ืจืืืืืง ืื ืืึทืืึทืืืืก ืืขืจืงืขื ื ืืื (ืกืคึผืขืฆืืขื ืคืื ืึทื ืืขืจืงืืืึทืื ืื ืืึทืืขืกืืืื ืคึผืึทืจืึทืืขืืขืจ ืืื ืื SHOW datesstyle ืืึทืคึฟืขื), ืืืืึทื ืึทืืืืืืืึทืืื ืืื ืืขื ืขื ืื ืงืขื ืขื ืืืื ืืืืขืจ ืืืึทืขืจ.
ืคืื ืืืื ืืืกืื ืืืก ืืืงืืืขื?
SELECT '04:05 Europe/Moscow'::time
ERROR: invalid input syntax for type time: "04:05 Europe/Moscow"
LINE 1: SELECT '04:05 Europe/Moscow'::time
^
********** ะัะธะฑะบะฐ **********
ERROR: invalid input syntax for type time: "04:05 Europe/Moscow"
SQL-ัะพััะพัะฝะธะต: 22007
ะกะธะผะฒะพะป: 8
ืคืืจืืืืก ืงืขื ืื ืืึทืืึทืืืืก ื ืืฉื ืคึฟืึทืจืฉืืืื ืื ืืคืืจืืฉ ืกืคึผืขืกืืคืืขื ืฆืืื? ืืืืื ืื ืฆืืื ืืื ืข ืืื ื ืืฉื ืงืืื ืืืจืืืืืืฆืืข, ื ืืจ ื ืคืืืขืจ ื ืืืขื, ืืืืก ืืืื ืืื ืขื ื ืืจ ืืื ืืขื ืงืื ืืขืงืกื ืคืื ื ืืืืื, ืืืืืืื ืขืก ื ืขืื ืืื ืืฉืืื ืื ืืืกืืืจืืข ืคืื โโืฆืืื ืืื ืข ืขื ืืขืจืื ืืขื, ืืื ืขืก ืืจืืขื ื ืืฉื ืื ื ืืืืื. ืืื ืืขืจ ืขืฆื ื ืืกื ืคืื ืื ืฆืืื-ืืื ืืข ืจืืืืึทื ืคืจืืืขืก - ืืืึธืก ืืื ืืขืจ ืคึผืจืึธืืจืึทืืืกื ืืึทืงืข ืืืื ืขื? ืืขืจืืืขืจ, ืึทืืฅ ืืื ืืึทืืืฉืืงืึทื ืืึธ, ืืืื ืืืจ ืงืืง ืืื ืขืก.
ืืืืก ืืื ืืื ืืื?
ืืืึทืืืฉืึทื ืื ืกืืืืึทืฆืืข. ืืืจ ืืึธืื ืึท ืคืขืื ืืื ืืืื ืืืฉ ืืื ืืืคึผ Timestamptz. ืืืจ ืืืืื ืฆื ืืื ืืขืงืก ืขืก. ืึธืืขืจ ืืืจ ืคึฟืึทืจืฉืืืื ืึทื ืื ืงืึทื ืกืืจืึทืงืฉืึทื ืคืื ืึทื ืืื ืืขืงืก ืืืืฃ ืืขื ืคืขืื ืืื ื ืื ืฉืืขื ืืืง ืืขืจืขืืืคืืจืืืงื ืืืืึทื ืคืื ืืืึทื ืืืื ืกืขืืขืงืืืืืืื (ืึผืืขื ืึทืืข ืืืึทืืืขืก ืคืื ืืขื ืืืคึผ ืืืขื ืืืื ืืื ืฆืืง). ืึทืืื ืืืจ ืืึทืฉืืืกื ืฆื ืจืขืืืฆืืจื ืื ืกืขืืขืงืืืืืืื ืคืื ืื ืืื ืืขืงืก ืืืจื ืงืึทืกืืื ื ืืขื ืืืคึผ ืฆื ืึท ืืึทืืข. ืืื ืืืจ ืืึทืงืืืขื ืึท ืืืขืจืจืึทืฉื:
CREATE INDEX "iIdent-DateLastUpdate"
ON public."Ident" USING btree
(("DTLastUpdate"::date));
ERROR: functions in index expression must be marked IMMUTABLE
********** ะัะธะฑะบะฐ **********
ERROR: functions in index expression must be marked IMMUTABLE
SQL-ัะพััะพัะฝะธะต: 42P17
ืืืืก ืืื ืื ืืขืฉื? ืืขืจ ืคืึทืงื ืืื ืึทื ืฆื ืืืึทืจืคื ืึท ืืืืืกืืึทืืคึผืื ืืืคึผ ืฆื ืึท ืืึทืืข ืืืคึผ, ืื ืืืขืจื ืคืื ืื TimeZone ืกืืกืืขื ืคึผืึทืจืึทืืขืืขืจ ืืื ืืขื ืืฆื, ืืืึธืก ืืืื ืื ืืืคึผ ืงืึทื ืืืขืจืืฉืึทื ืคึฟืื ืงืฆืืข ืึธืคืขื ืืืง ืืืืฃ ืึท ืื ืื ืคึผืึทืจืึทืืขืืขืจ, ื"ื. ืืืึทืืึทืืึทื. ืึทืืึท ืคืึทื ืืงืฉืึทื ื ืืขื ืขื ื ืืฉื ืขืจืืืืื ืืื ืื ืืื ืืขืงืก. ืืื ืืขื ืคืึทื, ืืืจ ืืืื ืืคืืจืืฉ ืึธื ืืืืึทืื ืืื ืืืึธืก ืฆืืื ืืึธื ืข ืื ืืืคึผ ืืืึทืจืคื ืืื ืืืจืืืขืงืึธืื.
ืืืขื ืืขืฆื ืืื ืืคืืื ื ืืฉื ืืขืฆื ืืืื
ืืืจ ืืขื ืขื ืืขื ืืฆื ืฆื ืืืฆื () ืฆืืจืืงืงืืืขื ืื ืงืจืึทื ื ืืึทืืข / ืฆืืื, ืืขื ืืืขื ืืื ืืฉืืื ืื ืฆืืื ืืึธื ืข. ืึธืืขืจ ืงืืง ืืื ืื ืคืืืืขื ืืข ืคึฟืจืืื:
START TRANSACTION;
SELECT now();
now
timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03
...
SELECT now();
now
timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03
...
SELECT now();
now
timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03
COMMIT;
ืื ืืึทืืข / ืฆืืื ืืื ืืืืืขืงืขืจื ืื ืืขืืืข ืงืืื ืขื ืื ืืื ืคืื ืฆืืึทื ืืื ืืืจืืืขืืื ืืขื ืืื ื ืื ืคืจืืขืจืืืงืข ืืขืื! ืืืืก ืืื ืื ืืขืฉื? ืืขืจ ืคืึทืงื ืืื ืึทื ืืืฆื () ืืื ื ืืฉื ืื ืงืจืึทื ื ืฆืืื, ืึธืืขืจ ืื ืึธื ืืืื ืฆืืื ืคืื ืืขื ืงืจืึทื ื ืืจืึทื ืกืึทืงืืืึธื. ืืขืจืืืขืจ, ืขืก ืืื ื ืืฉื ืืืืฉื ืืื ืื ืืึทืกืข - ืืึทืื. ืงืืื ืึธื ืคึฟืจืขื ืืึธื ืืฉื ืึทืจืืืก ืื ืคืึทืจื ืขื ืคืื ืึท ืืจืึทื ืกืึทืงืืืึธื ืืื ืืื ืืขืืืืงืื ืืื ืึท ืืจืึทื ืกืึทืงืืืึธื ืืืคึผืืืกืึทืืื, ืืืึธืก ืืื ืืืึธืก ืืืจ ืืึธื ื ืื ืืึทืืขืจืงื ืึทื ืื ืฆืืื ืืืืืขืงืขืจื ืืืจื ืึท ืคึผืฉืื ืืืืกืงืืืึทืื ืืืฆื (); ืืื ืคืึทืงื, ื ืืฉื ืื ืงืจืึทื ื ... ืืืื ืืืจ ืืืืื ืฆื ืืึทืงืืืขื ืึทื ืขืจืืขื ืงืจืึทื ื ืฆืืื, ืืืจ ืืึทืจืคึฟื ืฆื ื ืืฆื ืื clock_timestamp() ืคึฟืื ืงืฆืืข.
ืืขืงืข ื ืืืขืจ ืคืื ืฃ. ืืืกื
ืืึธืื ืข ืึท ืืืกื
SELECT '111'::bit(4)
bit
bit(4)
------
1110
ืืืึธืก ืืืึทื ืืึธื ืื ืืืื ืืืื ืฆืืืขืืขืื ืืื ืคืึทื ืคืื ืืืคึผ ืคืึทืจืืขื ืืขืจืื ื? ืขืก ืืืื ื ืฆื ืืืื ืืืืฃ ืื ืืื ืงืก. ืืืขืจ ืืืืื ืื ืืึทืืข ืืื ืึท ืึทื ืืขืจืฉ ืืืื ืื ื ืืืืฃ ืืขื ืขื ืื. ืืืื ืึธืคึผืืขืืื: ืืืื ืื ื ืืืขืจ ืคืื ืืืืืฉืึทืฅ ืงืขื ื ืืฉื ืฉืืืืขื ืืืขื ืืืจ ืงืึทืกืืื ื ืึท ืืืคึผ, ืืืจ ืืืขื ื ืืฉื ืืึทืงืืืขื ืืืึธืก ืืืจ ืืืืื. ืืึธืก ืึทืคึผืืืื ืฆื ืืืืืข ืึทืืื ื ืืืื ืฆื ืื ืจืขืื ืืื ืืจืืืื ื ืืืื. ืืืื ืืืืฃ ืื ืจืขืืืข...
ืืขืงืข ื ืืืขืจ ืืขืงืก. ืขืจืืื
ืืคืืื NULL ืืื ื ืืฉื ืคืืืขืจื
SELECT ARRAY[1, 2] || NULL
?column?
integer[]
---------
{1,2}
ืืื ื ืึธืจืืึทื ืืขื ืืฉื ืืืืคืฉืืืื ืืืืฃ SQL, ืืืจ ืืขืจืืืึทืจืื ืึทื ืืขืจ ืจืขืืืืืึทื ืคืื ืืขื ืืืืกืืจืืง ืืื NULL. ืืืขืจ ืขืก ืืื ื ืืฉื ืืึธืจื. ื ืืขื ืืข ืืื ืืืืืขืงืขืจื. ืคืืจืืืืก? ืืืืึทื ืืื ืืขื ืคืึทื ืื ืืึทืืข ืงืึทืกืฅ NULL ืฆื ืึท ืื ืืึทืืืฉืขืจ ืืขื ืืข ืืื ืืืคึผืืืกืึทื ืจืืคื ืื array_cat ืคืื ืงืฆืืข. ืึธืืขืจ ืขืก ืืื ื ืึธื ืืืงืืึธืจ ืืืึธืก ืื "ืืขื ืืข ืงืึทืฅ" ืืื ื ืืฉื ืืึทืฉืืขืืืง ืื ืืขื ืืข. ืืขื ืึธืคึผืคืืจืื ื ืืืื ื ืึธืจ ืืึทืจืฃ ืฆื ืืืื ืืขืจืืื ื.
ืกืึทืืขืจืืื. ืขืก ืืขื ืขื ืึท ืคึผืืึทืฅ ืคืื ืืึธืื ืข ืืืื. ืจืืึฟ ืคืื ืืื, ืคืื ืงืืจืก, ืืขื ืขื ื ืืฉื ืึทืืื ืงืจืืืืฉ ืืื ืฆื ืจืขืื ืืืขืื ืืืืืืึทื ืืื ืื ืึทืคึผืจืึธืืคึผืจืืื ื ืึทืืืจ. ืืื ืื ืืขืจืข ืืขื ืขื ืืขืจืงืืขืจื ืืืจื ืื ืคืื ื ืืฆื ืึธืืขืจ ืื ืึธืคืืงืืึทื ืคืื ืืืืขืจ ืึธื ืืืขื ืืืขื ืืื ืืืืขืจ ืกืืืืึทืืืึธื ืก. ืืืขืจ ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืึทื, ืขืก ืืขื ืขื ืคืืืข ืกืึทืคึผืจืืืืื. ืืขืจืืืขืจ, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืกื ืืืขืื ืืื. ืืืื ืืืจ ืืขืคึฟืื ืขื ืขืคึผืขืก ืึทื ืืขืจืฉ ืืึธืื ืข ืึธืืขืจ ืืืืขืืืืื ืืืขื ืืื ืื ื ืึทืืืจ ืคืื ืงืืื ืืืืคึผืก, ืฉืจืืึทืื ืืื ืื ืืึทืืขืจืงืื ืืขื, ืืื ืืืขื ืืืื ืฆืืคืจืืื ืฆื ืืืืื ืฆื ืื ืืึธืืกืึทืืืฉ ืื ืืืฆื ืืืืฃ ืืื.
ืืงืืจ: www.habr.com