10.4. Ð¥Ñанимое знаÑение #
ÐнаÑениÑ, вÑÑавлÑемÑе в ÑаблиÑÑ, пÑеобÑазÑеÑÑÑ Ð² Ñип даннÑÑ Ñелевого ÑÑолбÑа по ÑледÑÑÑÐµÐ¼Ñ Ð°Ð»Ð³Ð¾ÑиÑмÑ.
ÐÑеобÑазование по ÑÐ¸Ð¿Ñ Ñ ÑанениÑ
ÐÑовеÑиÑÑ ÑоÑное Ñовпадение Ñ ÑелевÑм Ñипом.
ÐÑли ÑÐ¸Ð¿Ñ Ð½Ðµ ÑовпадаÑÑ, попÑÑаÑÑÑÑ Ð¿ÑивеÑÑи Ñип к ÑелевомÑ. ÐÑо возможно, еÑли в каÑалоге
pg_cast(Ñм. CREATE CAST) заÑегиÑÑÑиÑовано пÑиведение пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ñипами. ÐÑли же ÑезÑлÑÑÐ°Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ â ÑÑÑока неизвеÑÑного Ñипа, ÑодеÑжимое ÑÑой ÑÑÑоки бÑÐ´ÐµÑ Ð¿Ð¾Ð´Ð°Ð½Ð¾ на Ð²Ñ Ð¾Ð´ пÑоÑедÑÑе ввода Ñелевого Ñипа.ÐÑовеÑиÑÑ, не ÑÑебÑеÑÑÑ Ð»Ð¸ пÑиведение ÑазмеÑа Ð´Ð»Ñ Ñелевого Ñипа. ÐÑиведение ÑазмеÑа â ÑÑо пÑеобÑазование Ñипа к ÑÐ°ÐºÐ¾Ð¼Ñ Ð¶Ðµ. ÐÑли ÑÑо пÑиведение опиÑано в каÑалоге
pg_cast, пÑимениÑÑ Ðº его к ÑезÑлÑÑаÑÑ Ð²ÑÑажениÑ, пÑежде Ñем ÑÐ¾Ñ ÑаниÑÑ Ð² Ñелевом ÑÑолбÑе. ФÑнкÑиÑ, ÑеализÑÑÑÐ°Ñ Ñакое пÑиведение, вÑегда пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй паÑамеÑÑ Ñипаinteger, в коÑоÑом пеÑедаÑÑÑÑ Ð·Ð½Ð°ÑениеatttypmodÐ´Ð»Ñ Ñелевого ÑÑолбÑа (обÑÑно ÑÑо ÐµÑ Ð¾Ð±ÑÑвленнÑй ÑазмеÑ, Ñ Ð¾ÑÑ Ð¸Ð½ÑеÑпÑеÑиÑоваÑÑÑÑ Ð·Ð½Ð°ÑениеatttypmodÐ´Ð»Ñ ÑазнÑÑ Ñипов даннÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾-ÑазномÑ), и ÑÑеÑий паÑамеÑÑ Ñипаboolean, пеÑедаÑÑий пÑизнак Ñвное/неÑвное пÑеобÑазование. ФÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ÑвеÑÐ°ÐµÑ Ð·Ð° вÑе опеÑаÑии Ñ Ð´Ð»Ð¸Ð½Ð¾Ð¹, вклÑÑÐ°Ñ ÐµÑ Ð¿ÑовеÑÐºÑ Ð¸ ÑÑеÑение даннÑÑ .
ÐÑÐ¸Ð¼ÐµÑ 10.9. ÐÑеобÑазование Ð´Ð»Ñ Ñипа Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ character
СледÑÑÑие запÑоÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ, ÑÑо ÑоÑ
ÑанÑемое знаÑение подгонÑеÑÑÑ Ð¿Ð¾Ð´ ÑÐ°Ð·Ð¼ÐµÑ Ñелевого ÑÑолбÑа, обÑÑвленного как character(20):
CREATE TABLE vv (v character(20));
INSERT INTO vv SELECT 'abc' || 'def';
SELECT v, octet_length(v) FROM vv;
v | octet_length
----------------------+--------------
abcdef | 20
(1 row)
СÑÑÑ Ð¿ÑоиÑÑ
одÑÑего здеÑÑ Ð² Ñом, ÑÑо две конÑÑанÑÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑного Ñипа по ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð¾ÑпÑинимаÑÑÑÑ ÐºÐ°Ðº знаÑÐµÐ½Ð¸Ñ text, ÑÑо позволÑÐµÑ Ð¿ÑимениÑÑ Ðº ним опеÑаÑÐ¾Ñ || как опеÑаÑÐ¾Ñ ÐºÐ¾Ð½ÐºÐ°ÑенаÑии знаÑений text. ÐаÑем ÑезÑлÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑоÑа, имеÑÑий Ñип text, пÑиводиÑÑÑ Ðº ÑÐ¸Ð¿Ñ bpchar («blank-padded char» (ÑимволÑ, дополненнÑе пÑобелами), внÑÑÑеннее Ð¸Ð¼Ñ Ñипа character) в ÑооÑвеÑÑÑвии Ñ Ñипом Ñелевого ÑÑолбÑа. (Так как ÑÐ¸Ð¿Ñ text и bpchar двоиÑно-ÑовмеÑÑимÑ, пÑи ÑÑом пÑеобÑазовании ÑеалÑнÑй вÑзов ÑÑнкÑии не добавлÑеÑÑÑ.) ÐаконеÑ, в ÑиÑÑемном каÑалоге наÑ
одиÑÑÑ ÑÑнкÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑазмеÑа bpchar(bpchar, integer, boolean) и пÑименÑеÑÑÑ Ð´Ð»Ñ ÑезÑлÑÑаÑа опеÑаÑоÑа и Ð´Ð»Ð¸Ð½Ñ ÑÑолбÑа. ÐÑа ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ñипом ÑÑнкÑÐ¸Ñ Ð¿ÑовеÑÑÐµÑ Ð´Ð»Ð¸Ð½Ñ Ð´Ð°Ð½Ð½ÑÑ
и добавлÑÐµÑ Ð½ÐµÐ´Ð¾ÑÑаÑÑие пÑобелÑ.