เชถเช‚เช•เชพเชธเซเชชเชฆ เชชเซเชฐเช•เชพเชฐเซ‹

เชคเซ‡เชฎเชจเชพ เชฆเซ‡เช–เชพเชต เชตเชฟเชถเซ‡ เชถเช‚เช•เชพเชธเซเชชเชฆ เช•เช‚เชˆ เชจเชฅเซ€. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชคเซ‡เช“ เชคเชฎเชจเซ‡ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เชชเชฃ เชฒเชพเช—เซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เชฎเชพเชคเซเชฐ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช›เซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชคเชชเชพเชธเซ‹ เชจเชนเซ€เช‚. เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชคเซ‡เช“ เชคเซ‡เชฎเชจเซ‹ เช•เชชเชŸเซ€ เชธเซเชตเชญเชพเชต เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡, เชคเชฎเชพเชฐเซ€ เช…เชชเซ‡เช•เซเชทเชพ เช•เชฐเชคเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฒเช— เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเซ‡เช“ เชเชตเซเช‚ เช•เช‚เชˆเช• เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเชพเชฅเซ€ เชคเชฎเชพเชฐเชพ เชตเชพเชณ เช›เซ‡เชกเชพ เชชเชฐ เชŠเชญเชพ เชฐเชนเซ‡ เช›เซ‡ - เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เช“ เชคเซ‡เชฎเชจเซ‡ เชธเซ‹เช‚เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช—เซเชชเซเชค เชกเซ‡เชŸเชพ เช—เซเชฎเชพเชตเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชคเซ‡เชฎเชจเซ‹ เชฎเซเช•เชพเชฌเชฒเซ‹ เช•เชฐเซ‹ เช›เซ‹, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เช“ เชฆเชพเชตเซ‹ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เช“ เชเช•เชฌเซ€เชœเชพเชจเซ‡ เช“เชณเช–เชคเชพ เชจเชฅเซ€, เชœเซ‹ เช•เซ‡ เชชเชกเช›เชพเชฏเชพเช“เชฎเชพเช‚ เชคเซ‡เช“ เชธเชฎเชพเชจ เชนเซ‚เชก เชนเซ‡เช เชณ เชธเช–เชค เชฎเชนเซ‡เชจเชค เช•เชฐเซ‡ เช›เซ‡. เช†เช–เชฐเซ‡ เชคเซ‡เชฎเชจเซ‡ เชธเซเชตเชšเซเช› เชชเชพเชฃเซ€เชฎเชพเช‚ เชฒเชพเชตเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชšเชพเชฒเซ‹ เช† เชถเช‚เช•เชพเชธเซเชชเชฆ เชชเซเชฐเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชชเชฃ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ€เช.

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::int เชจเชนเชฟ, เชชเชฃ int(1) เชชเชฃ เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡ เชธเชฎเช•เช•เซเชท เชนเชถเซ‡. เชชเชฐเช‚เชคเซ เชเชตเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚ เช•เซ‡ เชœเซ‡เชฎเชจเชพ เชจเชพเชฎเชฎเชพเช‚ เช˜เชฃเชพ เชถเชฌเซเชฆเซ‹ เชนเซ‹เชฏ เช›เซ‡! เชคเซ‡เชฅเซ€, เชœเซ‹ เชคเชฎเซ‡ เชตเชฟเชงเซ‡เชฏเชพเชคเซเชฎเช• เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชšเซ‹เช•เชธเชพเช‡เชจเชพ เชชเซเชฐเช•เชพเชฐเชจเซ‡ เชฌเชฎเชฃเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เช–เซเชฏเชพเชคเซเชฎเช• เชฎเซ‚เชฒเซเชฏ เช•เชพเชธเซเชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เช† เชชเซเชฐเช•เชพเชฐเชจเชพ เชซเซเชฒเซ‹เชŸ8เชจเชพ เช‰เชชเชจเชพเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹, เชเชŸเชฒเซ‡ เช•เซ‡ เชธเชฟเชฒเซ‡เช•เซเชŸ เชซเซเชฒเซ‹เชŸ8(1).

เช…เชจเช‚เชค เช•เชฐเชคเชพเช‚ เชฎเซ‹เชŸเซเช‚ เชถเซเช‚ เช›เซ‡?

SELECT 'Infinity'::double precision < 'NaN'::double precision

?column?
boolean
---------
t

เชคเซ‡ เช•เซ‡เชตเซเช‚ เช›เซ‡ เชคเซ‡ เชœเซเช“! เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เช…เชจเช‚เชค เช•เชฐเชคเชพเช‚ เช•เช‚เชˆเช• เชฎเซ‹เชŸเซเช‚ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ NaN เช›เซ‡! เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, PostgreSQL เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชชเซเชฐเชพเชฎเชพเชฃเชฟเช• เช†เช‚เช–เซ‹เชฅเซ€ เช…เชฎเชจเซ‡ เชœเซเช เช›เซ‡ เช…เชจเซ‡ เชฆเชพเชตเซ‹ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ NaN เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เชธเช‚เช–เซเชฏเชพ เช•เชฐเชคเชพ เชตเชงเชพเชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฅเซ€, เช…เชจเช‚เชค เช›เซ‡. เชตเชฟเชฐเซเชฆเซเชง เชชเชฃ -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/เชŸเซ‡เช•เซเชธเซเชŸ

เชชเชพเชคเซเชฐเชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹เชฎเชพเช‚ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชตเชฟเชšเชฟเชคเซเชฐเชคเชพเช“ เชชเชฃ เชนเชพเชœเชฐ เช›เซ‡. เชšเชพเชฒเซ‹ เชคเซ‡เชฎเชจเซ‡ เชชเชฃ เชœเชพเชฃเซ€เช.

เช† เช•เซ‡เชตเชพ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชฏเซเช•เซเชคเชฟเช“ เช›เซ‡?

SELECT 'ะŸะ•ะขะฏ'::"char"
     , 'ะŸะ•ะขะฏ'::"char"::bytea
     , 'ะŸะ•ะขะฏ'::char
     , 'ะŸะ•ะขะฏ'::char::bytea

 char  | bytea |    bpchar    | bytea
"char" | bytea | character(1) | bytea
-------+-------+--------------+--------
 โ•จ     | xd0  | ะŸ            | xd09f

เช† เช•เชฏเชพ เชชเซเชฐเช•เชพเชฐเชจเซ‹ "เชšเชพเชฐ" เช›เซ‡, เช† เช•เซ‡เชตเซ‹ เชฐเช‚เช—เชฒเซ‹ เช›เซ‡? เช…เชฎเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€... เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช…เชตเชคเชฐเชฃเชฎเชพเช‚ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชคเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เช…เช•เซเชทเชฐ เชนเซ‹เชตเชพเชจเซ‹ เชกเซ‹เชณ เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡ เชฐเซ‡เช—เซเชฏเซเชฒเชฐ เชšเชพเชฐเชฅเซ€ เช…เชฒเช— เช›เซ‡, เชœเซ‡ เช…เชตเชคเชฐเชฃ เชตเช—เชฐเชจเชพ เชนเซ‹เชฏ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชคเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช— เชฐเชœเซ‚เช†เชคเชจเซ‹ เชฎเชพเชคเซเชฐ เชชเซเชฐเชฅเชฎ เชฌเชพเชˆเชŸ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เช…เช•เซเชทเชฐ เชชเซเชฐเชฅเชฎ เช…เช•เซเชทเชฐเชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชชเซเชฐเชฅเชฎ เช…เช•เซเชทเชฐ P เช…เช•เซเชทเชฐ เช›เซ‡, เชœเซ‡ เชฏเซเชจเชฟเช•เซ‹เชก เชฐเชœเซ‚เช†เชคเชฎเชพเช‚ 2 เชฌเชพเช‡เชŸเซเชธ เชฒเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชชเชฐเชฟเชฃเชพเชฎเชจเซ‡ เชฌเชพเช‡เชŸเชพเชจเชพ เชชเซเชฐเช•เชพเชฐเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชพเชตเชพ เชฎเชณเซ‡ เช›เซ‡. เช…เชจเซ‡ "char" เชชเซเชฐเช•เชพเชฐ เช† เชฏเซเชจเชฟเช•เซ‹เชก เชฐเชœเซ‚เช†เชคเชจเซ‹ เชฎเชพเชคเซเชฐ เชชเซเชฐเชฅเชฎ เชฌเชพเชˆเชŸ เชฒเซ‡ เช›เซ‡. เชคเซ‹ เชชเช›เซ€ เช† เชชเซเชฐเช•เชพเชฐเชจเซ€ เชถเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡? 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) เชฎเชพเช‚ เช•เชพเชธเซเชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชชเชพเช›เชณเชจเซ€ เชœเช—เซเชฏเชพเช“ เช•เซเชฏเชพเช‚ เช›เซ‡? เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚ เชœเชฃเชพเชตเซ‡ เช›เซ‡: "เชœเซเชฏเชพเชฐเซ‡ เช…เช•เซเชทเชฐเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเซ‡ เช…เชจเซเชฏ เช…เช•เซเชทเชฐ เชชเซเชฐเช•เชพเชฐเชฎเชพเช‚ เช•เชพเชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชชเชพเช›เชณเชจเซ€ เชตเซเชนเชพเช‡เชŸเชธเซเชชเซ‡เชธ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡." เช† เช…เชฃเช—เชฎเซ‹ เชฏเชพเชฆ เชฐเชพเช–เชตเซ‹ เชœเซ‹เชˆเช. เช…เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชœเซ‹ เช…เชตเชคเชฐเชฃ เช•เชฐเซ‡เชฒ เชธเซเชŸเซเชฐเชฟเช‚เช— เช•เซ‹เชจเซเชธเซเชŸเชจเซเชŸ เชธเซ€เชงเซเช‚ varchar(6) เชŸเชพเชˆเชช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชชเชพเช›เชณเชจเซ€ เชœเช—เซเชฏเชพเช“ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เชตเชพ เชšเชฎเชคเซเช•เชพเชฐเซ‹ เช›เซ‡.

เชซเชพเช‡เชฒ เชจเช‚เชฌเชฐ เชคเซเชฐเชฃ. json/jsonb

JSON เช เชเช• เช…เชฒเช— เชฎเชพเชณเช–เซเช‚ เช›เซ‡ เชœเซ‡ เชชเซ‹เชคเชพเชจเซเช‚ เชœเซ€เชตเชจ เชœเซ€เชตเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชคเซ‡เชจเซ€ เชธเช‚เชธเซเชฅเชพเช“ เช…เชจเซ‡ PostgreSQL เชจเซ€ เชธเช‚เชธเซเชฅเชพเช“ เชฅเซ‹เชกเซ€ เช…เชฒเช— เช›เซ‡. เช…เชนเซ€เช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช›เซ‡.

เชœเซ‹เชนเซเชจเซเชธเชจ เช…เชจเซ‡ เชœเซ‹เชนเซเชจเซเชธเชจ. เชคเชซเชพเชตเชค เช…เชจเซเชญเชตเซ‹

SELECT 'null'::jsonb IS NULL

?column?
boolean
---------
f

เชตเชพเชค เช เช›เซ‡ เช•เซ‡ JSON เชจเซ€ เชชเซ‹เชคเชพเชจเซ€ เชจเชฒ เชเชจเซเชŸเชฟเชŸเซ€ เช›เซ‡, เชœเซ‡ PostgreSQL เชฎเชพเช‚ NULL เชจเซเช‚ เชเชจเชพเชฒเซ‹เช— เชจเชฅเซ€. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, 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 datestyle เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‹), เช•เชพเชฐเชฃ เช•เซ‡ เช† เชฌเชพเชฌเชคเชฎเชพเช‚ เช…เชธเซเชชเชทเซเชŸเชคเชพ เช–เซ‚เชฌ เช–เชฐเซเชšเชพเชณ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชคเชฎเชจเซ‡ เช† เช•เซเชฏเชพเช‚เชฅเซ€ เชฎเชณเซเชฏเซเช‚?

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

เชถเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชธเชฎเชฏเชจเซ‡ เชธเชฎเชœเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€? เช•เชพเชฐเชฃ เช•เซ‡ เชŸเชพเชˆเชฎ เชเซ‹เชจเชจเซเช‚ เชธเช‚เช•เซเชทเชฟเชชเซเชค เชจเชพเชฎ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเชพเชฎ เช›เซ‡, เชœเซ‡ เชซเช•เซเชค เชคเชพเชฐเซ€เช–เชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชœ เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชธเชฎเชฏ เชเซ‹เชจเชจเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเชพ เช‡เชคเชฟเชนเชพเชธเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชคเชพเชฐเซ€เช– เชตเชฟเชจเชพ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช…เชจเซ‡ เชธเชฎเชฏเชฐเซ‡เช–เชพเชจเชพ เช–เซ‚เชฌ เชœ เชถเชฌเซเชฆเซ‹ เชชเซเชฐเชถเซเชจเซ‹ เช‰เชญเชพ เช•เชฐเซ‡ เช›เซ‡ - เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเชจเซ‹ เช–เชฐเซ‡เช–เชฐ เช…เชฐเซเชฅ เชถเซเช‚ เชนเชคเซ‹? เชคเซ‡เชฅเซ€, เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชœเซเช“ เชคเซ‹ เช…เชนเซ€เช‚ เชฌเชงเซเช‚ เชœ เชคเชพเชฐเซเช•เชฟเช• เช›เซ‡.

เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชถเซเช‚ เช–เซ‹เชŸเซเช‚ เช›เซ‡?

เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ‹. เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชคเชฎเชพเชฐเชพ เชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชชเชŸเซเช เชŸเชพเช‡เชช เชธเชพเชฅเซ‡เชจเซเช‚ เช•เซเชทเซ‡เชคเซเชฐ เช›เซ‡. เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹. เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชธเชฎเชœเซ‹ เช›เซ‹ เช•เซ‡ เช† เช•เซเชทเซ‡เชคเซเชฐ เชชเชฐ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชฌเชจเชพเชตเชตเซ€ เชคเซ‡เชจเซ€ เช‰เชšเซเชš เชชเชธเช‚เชฆเช—เซ€เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชจเซเชฏเชพเชฏเซ€ เชจเชฅเซ€ (เช† เชชเซเชฐเช•เชพเชฐเชจเชพ เชฒเช—เชญเช— เชคเชฎเชพเชฎ เชฎเซ‚เชฒเซเชฏเซ‹ เช…เชจเชจเซเชฏ เชนเชถเซ‡). เชคเซ‡เชฅเซ€ เชคเชฎเซ‡ เชคเชพเชฐเซ€เช– เชชเชฐ เชชเซเชฐเช•เชพเชฐ เช•เชพเชธเซเชŸ เช•เชฐเซ€เชจเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซ€ เชชเชธเช‚เชฆเช—เซ€ เช˜เชŸเชพเชกเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซ‹ เช›เซ‹. เช…เชจเซ‡ เชคเชฎเชจเซ‡ เช†เชถเซเชšเชฐเซเชฏ เชฅเชถเซ‡:

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

เชถเซเช‚ เชฌเชพเชฌเชค เช›เซ‡? เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชชเชŸเซเช เชŸเชพเช‡เชชเชจเซ‡ เชคเชพเชฐเซ€เช–เชจเชพ เชชเซเชฐเช•เชพเชฐ เชชเชฐ เช•เชพเชธเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชŸเชพเช‡เชฎเชเซ‹เชจ เชธเชฟเชธเซเชŸเชฎ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเซ€ เช•เชฟเช‚เชฎเชคเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชŸเชพเช‡เชช เช•เชจเซเชตเชฐเซเชเชจ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เชธเซเชŸเชฎ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เช…เชธเซเชฅเชฟเชฐ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชฎเชพเช‚ เช†เชตเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เชจเชฅเซ€. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเชฎเชพเชฐเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชธเซ‚เชšเชตเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ เช•เซ‡ เชŸเชพเช‡เชช เช•เชพเชธเซเชŸ เช•เชฏเชพ เชŸเชพเช‡เชฎ เชเซ‹เชจเชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชœเซเชฏเชพเชฐเซ‡ เช…เชคเซเชฏเชพเชฐเซ‡ เชคเซ‹ เชฌเชฟเชฒเช•เซเชฒ เชชเชฃ เชจเชฅเซ€

เช…เชฎเซ‡ เชŸเชพเชˆเชฎ เชเซ‹เชจเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชจเซ‡, เชตเชฐเซเชคเชฎเชพเชจ เชคเชพเชฐเซ€เช–/เชธเชฎเชฏ เชชเชฐเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชนเชตเซ‡() เชŸเซ‡เชตเชพเชฏเซ‡เชฒเชพ เช›เซ€เช. เชชเชฐเช‚เชคเซ เชจเซ€เชšเซ‡เชจเชพ เชชเซเชฐเชถเซเชจเซ‹ เชœเซเช“:

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;

เชคเชพเชฐเซ€เช–/เชธเชฎเชฏ เช เชœ เชชเชฐเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเช›เซ€ เชญเชฒเซ‡เชจเซ‡ เช…เช—เชพเช‰เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชชเช›เซ€ เช•เซ‡เชŸเชฒเซ‹ เชธเชฎเชฏ เชชเชธเชพเชฐ เชฅเชˆ เช—เชฏเซ‹ เชนเซ‹เชฏ! เชถเซเช‚ เชฌเชพเชฌเชค เช›เซ‡? เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ now() เช เชตเชฐเซเชคเชฎเชพเชจ เชธเชฎเชฏ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชตเชฐเซเชคเชฎเชพเชจ เชตเซเชฏเชตเชนเชพเชฐเชจเซ‹ เชชเซเชฐเชพเชฐเช‚เชญ เชธเชฎเชฏ เช›เซ‡. เชคเซ‡เชฅเซ€, เชคเซ‡ เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชฌเชฆเชฒเชพเชคเซเช‚ เชจเชฅเซ€. เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชจเชพ เช…เชตเช•เชพเชถเชจเซ€ เชฌเชนเชพเชฐ เชฒเซ‰เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เช•เซ‹เชˆเชชเชฃ เช•เซเชตเซ‡เชฐเซ€ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชฎเชพเช‚ เช…เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เชฒเชชเซ‡เชŸเชพเชฏเซ‡เชฒเซ€ เชนเซ‹เชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœ เช…เชฎเซ‡ เชจเซ‹เช‚เชงเชคเชพ เชจเชฅเซ€ เช•เซ‡ เชธเชฟเชฎเซเชชเชฒ SELECT now(); เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชตเชฐเซเชคเชฎเชพเชจ เชจเชฅเซ€... เชœเซ‹ เชคเชฎเซ‡ เชชเซเชฐเชฎเชพเชฃเชฟเช• เชตเชฐเซเชคเชฎเชพเชจ เชธเชฎเชฏ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹