8.10. ÐиÑовÑе ÑÑÑоки
ÐиÑовÑе ÑÑÑоки пÑедÑÑавлÑÑÑ Ñобой поÑледоваÑелÑноÑÑи из 1 и 0. ÐÑ
можно иÑполÑзоваÑÑ Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð±Ð¸ÑовÑÑ
маÑок. Ð SQL еÑÑÑ Ð´Ð²Ð° биÑовÑÑ
Ñипа: bit( и n)bit varying(, где n)n â положиÑелÑное Ñелое ÑиÑло.
Ðлина знаÑÐµÐ½Ð¸Ñ Ñипа bit должна в ÑоÑноÑÑи ÑавнÑÑÑÑÑ n; пÑи попÑÑке ÑоÑ
ÑаниÑÑ Ð´Ð°Ð½Ð½Ñе длиннее или коÑоÑе пÑоизойдÑÑ Ð¾Ñибка. ÐаннÑе Ñипа bit varying могÑÑ Ð¸Ð¼ÐµÑÑ Ð¿ÐµÑеменнÑÑ Ð´Ð»Ð¸Ð½Ñ, но не пÑевÑÑаÑÑÑÑ n; ÑÑÑоки болÑÑей Ð´Ð»Ð¸Ð½Ñ Ð½Ðµ бÑдÑÑ Ð¿ÑинÑÑÑ. ÐапиÑÑ bit без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð»Ð¸Ð½Ñ ÑавнознаÑна запиÑи bit(1), Ñогда как bit varying без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð»Ð¸Ð½Ñ Ð¿Ð¾Ð´ÑазÑÐ¼ÐµÐ²Ð°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð½ÐµÐ¾Ð³ÑаниÑенной длинÑ.
ÐÑимеÑание
ÐÑи попÑÑке пÑивеÑÑи знаÑение биÑовой ÑÑÑоки к ÑÐ¸Ð¿Ñ bit(, оно бÑÐ´ÐµÑ ÑÑеÑено или дополнено нÑлÑми ÑпÑава до Ð´Ð»Ð¸Ð½Ñ Ñовно n)n биÑ, оÑибки пÑи ÑÑом не бÑдеÑ. ÐодобнÑм обÑазом, еÑли Ñвно пÑивеÑÑи знаÑение биÑовой ÑÑÑоки к ÑÐ¸Ð¿Ñ bit varying(, она бÑÐ´ÐµÑ ÑÑеÑена ÑпÑава, еÑли ÐµÑ Ð´Ð»Ð¸Ð½Ð° пÑевÑÑÐ°ÐµÑ n)n биÑ.
СинÑакÑÐ¸Ñ ÐºÐ¾Ð½ÑÑÐ°Ð½Ñ Ð±Ð¸ÑовÑÑ ÑÑÑок опиÑан в ÐодÑазделе 4.1.2.5, а вÑе доÑÑÑпнÑе биÑовÑе опеÑаÑоÑÑ Ð¸ ÑÑнкÑии пеÑеÑиÑÐ»ÐµÐ½Ñ Ð² Разделе 9.6.
ÐÑÐ¸Ð¼ÐµÑ 8.3. ÐÑполÑзование биÑовÑÑ ÑÑÑок
CREATE TABLE test (a BIT(3), b BIT VARYING(5)); INSERT INTO test VALUES (B'101', B'00'); INSERT INTO test VALUES (B'10', B'101');ÐШÐÐÐÐ: длина биÑовой ÑÑÑоки (2) не ÑооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¿Ñ bit(3)INSERT INTO test VALUES (B'10'::bit(3), B'101'); SELECT * FROM test;a | b -----+----- 101 | 00 100 | 101
ÐÐ»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð±Ð¸Ñовой ÑÑÑоки иÑполÑзÑеÑÑÑ Ð¿Ð¾ 1 байÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ гÑÑÐ¿Ð¿Ñ Ð¸Ð· 8 биÑ, плÑÑ 5 или 8 Ð±Ð°Ð¹Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно в завиÑимоÑÑи Ð¾Ñ Ð´Ð»Ð¸Ð½Ñ ÑÑÑоки (но длиннÑе ÑÑÑоки могÑÑ Ð±ÑÑÑ ÑжаÑÑ Ð¸Ð»Ð¸ вÑнеÑÐµÐ½Ñ Ð¾ÑделÑно, как опиÑано в Разделе 8.3 пÑимениÑелÑно к ÑимволÑнÑм ÑÑÑокам).