O'zgaruvchan uzunlikdagi belgilar turi
Kirish: Ushbu qo'llanmada siz PostgreSQL VARCHAR turi yordamida ma'lumotlar bazasida o'zgaruvchan uzunlikdagi matnli satrlarni saqlashni o'rganasiz.
CHARACTER VARYING yoki qisqacha VARCHAR turi ma'lumotlar bazasida o'zgaruvchan uzunlikdagi satrlarni saqlash imkonini beradi.
CHARACTER VARYING turini e'lon qilish sintaksisi quyidagicha:
column_name CHARACTER VARYING (n)
Amaliyotda ko'pincha uning sinonimi bo'lgan VARCHAR qisqartmasi ishlatiladi:
column_name VARCHAR(n)
Ushbu sintaksisda n parametri ustun saqlashi mumkin bo'lgan maksimal belgilar sonini belgilaydi. n musbat butun son bo'lib, uning qiymati 10,485,760 dan oshmasligi kerak.
Agar siz ustunga n tadan ko'p belgi kiritishga yoki yangilashga urinsangiz, PostgreSQL xatolik chiqaradi.
Ma'lumotlar bazasida satr uzunligini cheklashning ikkita asosiy sababi bor:
CHAR ustunidan farqli o'laroq, VARCHAR ustuniga n dan kamroq belgiga ega matn kiritilsa, PostgreSQL uning oxiriga sun'iy bo'shliqlar (probellar) qo'shmaydi.
Agar uzunligi cheklanmagan matn saqlamoqchi bo'lsangiz, uzunlik ko'rsatkichini tushirib qoldirishingiz mumkin:
column_name VARCHAR
Bunday holda, ustun istalgan uzunlikdagi matnni qabul qila oladi.
Birinchidan, products jadvalini yaratamiz:
CREATE TABLE products (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(50) NOT NULL,
description VARCHAR
);
products jadvalida ikkita VARCHAR ustuni mavjud:
name ustuni maksimal 50 ta belgini saqlashi mumkin. 50 tadan ortiq belgi kiritilsa, xatolik yuz beradi.description ustunida uzunlik ko'rsatilmagan, shuning uchun u istalgan uzunlikdagi tavsif matnini saqlay oladi.Ikkinchidan, products jadvaliga qatorlar qo'shamiz:
INSERT INTO
products (name, description)
VALUES
(
'Galaxy S21',
'Yuqori darajadagi smartfon: 6.2 dyuymli ekran, uchlik kamera va 5G aloqa.'
),
(
'iPhone 16',
'Apple flagmani: 6.1 dyuymli Super Retina XDR displey va A18 Bionic protsessor.'
) RETURNING *;
Natija:
id | name | description
----+------------+-----------------------------------------------------------------------------------------
1 | Galaxy S21 | Yuqori darajadagi smartfon: 6.2 dyuymli ekran, uchlik kamera va 5G aloqa.
2 | iPhone 16 | Apple flagmani: 6.1 dyuymli Super Retina XDR displey va A18 Bionic protsessor.
Uchinchidan, nomi 50 belgidan uzun bo'lgan mahsulotni kiritib ko'ramiz:
INSERT INTO products(name)
VALUES('Ultra-High Definition Quantum Dot Curved Smart TV 90-Inch');
PostgreSQL quyidagi xatolikni chiqaradi:
ERROR: value too long for type character varying(50)
VARCHAR(n) turidan foydalaning.VARCHAR deb yozing.