ПостгреСКЛ

ПостгреСКЛ УННЕСТ примери

ПостгреСКЛ УННЕСТ примери
Колону у ПостгреСКЛ-у можете навести као само низ одговарајућих врста података. Све могућности су уграђени, кориснички одређени и неотуђиви типови података. Поред тога, низови су веома релевантни у ПостгреСКЛ-у. Научили сте о низовима у ПостгреСКЛ-у, укључујући како се конструише, поставља упит, а понекад чак и генеришу низови методом АРРАИ. Међутим, постоје тренуци када бих желео да направим обрнуто и конвертујем ПостгреСКЛ низ у редове. Много је разлога због којих бисте то желели да урадите. Рецимо да неко време тражите спој два низа. У ПостгреСКЛ-у, ИНТЕРСЕЦТ оператер то може ефикасно да уради за два различита скупа редова. Међутим, не постоји пандан за низове. Исто тако, оператор УНИОН спаја 2 пара редова; међутим, не постоји ништа упоредиво за низове. Чини се да је метода УННЕСТ тајна свега овога. Док конзумирате УННЕСТ, морате бити опрезни јер би (као и код већине рачунарских система) ПостгреСКЛ радио све што му наложите, а не тачно оно што желите.

Да бисте у потпуности разрадили овај концепт, отворите инсталирану љуску командне линије ПостгреСКЛ у свом систему. Наведите име сервера, име базе података, број порта, корисничко име и лозинку за одређеног корисника ако не желите да почнете да радите са подразумеваним опцијама. Ако желите да радите са подразумеваним параметрима, оставите сваку опцију празном и притисните Ентер сваку опцију. Сада је ваша љуска командне линије спремна за рад.

Пример 01: Дефинисање података типа низа

Добра је идеја проучити основе пре него што пређете на модификовање вредности низа у бази података. Ево начина за одређивање листе врста текста. Можете видети да је на излазу приказана листа врста текста помоћу клаузуле СЕЛЕЦТ.

>> ОДАБЕРИТЕ 'Акса, Раза, Саеед' :: тект [];

Тип података мора бити дефинисан током писања упита. ПостгреСКЛ неће препознати врсту података ако се чини да је низ. Алтернативно, могли бисмо да користимо формат АРРАИ [] да бисмо га одредили као тип низа, као што је приказано у наставку у упиту. Из доле цитираног излаза можете видети да су подаци дохваћени као тип низа помоћу упита СЕЛЕЦТ.

>> ОДАБЕРИ НИЗ ['Акса', 'Раза', 'Саеед'];

Када изаберете исти низ података са упитом СЕЛЕЦТ док користите ФРОМ клаузулу, то не ради онако како би требало. На пример, испробајте доњи упит клаузуле ФРОМ у љусци. Проверићете да ли ће се појавити грешка. То је зато што клаузула СЕЛЕЦТ ФРОМ претпоставља да су подаци које преузима вероватно група редова или неке тачке из табеле.

>> ОДАБЕРИ * ИЗ НИЗА ['Акса', 'Раза', 'Саеед'];

Пример 02: Претварање низа у редове

АРРАИ [] је функција која враћа атомску вредност. Као резултат, одговара само клаузули СЕЛЕЦТ, а не и клаузули ФРОМ, јер наши подаци нису били у обрасцу 'ров'. Због тога смо добили грешку у горњем примеру. Ево како се користи функција УННЕСТ за претварање низова у редове док ваш упит не ради са клаузулом.

>> ОДАБЕРИТЕ ГЊЕЗДУ (АРРАИ ['Акса', 'Раза', 'Саеед']);

Пример 03: Претварање редова у низ

Да бисмо редове поново претворили у низ, морамо да дефинишемо тај одређени упит унутар упита да бисмо то учинили. Овде морате користити два СЕЛЕЦТ упита. Интерни упит за одабир претвара низ у редове помоћу функције УННЕСТ. Док спољни СЕЛЕЦТ упит поново претвара све те редове у један низ, као што је приказано на доле наведеној слици. Пази; морате да користите мање правописе „поља“ у спољном СЕЛЕЦТ упиту.

>> СЕЛЕЦТ низ (СЕЛЕЦТ УННЕСТ (АРРАИ ['Акса', 'Раза', 'Саеед']));

Пример 04: Уклоните дупликате помоћу клаузуле ДИСТИНЦТ

ДИСТИНЦТ вам може помоћи да извучете дупликате из било ког облика података. Међутим, нужно захтева употребу редова као података. То значи да овај метод ради за целе бројеве, текст, плутајуће и друге типове података, али низови нису дозвољени. Да бисте уклонили дупликате, прво морате податке типа типа низа претворити у редове методом УННЕСТ. Након тога, ови претворени редови података проследиће се клаузули ДИСТИНЦТ. Можете погледати излаз испод, да је низ претворен у редове, тада су дохваћене само различите вредности из ових редова помоћу клаузуле ДИСТИНЦТ.

>> ОДАБЕРИТЕ РАЗЛИКУЈУЋЕ НЕНЕСТЕ ('Акса, Раза, Саеед, Раза, Узма, Акса' :: тект []);

Ако вам је као излаз потребан низ, користите функцију арраи () у првом СЕЛЕЦТ упиту и клаузулу ДИСТИНЦТ у следећем СЕЛЕЦТ упиту. На приказаној слици можете видети да је излаз приказан у облику низа, а не у реду. Док излаз садржи само различите вредности.

>> СЕЛЕЦТ низ (СЕЛЕЦТ ДИСТИНЦТ УННЕСТ ('Акса, Раза, Саеед, Раза, Узма, Акса' :: тект []));

Пример 05: Уклоните дупликате док користите клаузулу ОРДЕР БИ

Такође можете уклонити дупликате вредности из низа типа флоат, као што је приказано доле. Заједно са засебним упитом, користићемо клаузулу ОРДЕР БИ да бисмо добили резултат у редоследу сортирања одређене вредности. Испробајте доле наведени упит у љусци командне линије да бисте то учинили.

>> ОДАБЕРИ РАЗЛИКУЈУЋЕ ГЊЕСТЕ ('2,85, 2.73, 2.85, 1.8, 2.73 ':: флоат []) НАРУЧИ ПО 1;

Прво, низ је претворен у редове помоћу функције УННЕСТ; тада ће се ови редови сортирати у растућем редоследу помоћу клаузуле ОРДЕР БИ као што је приказано доле.

Да бисте редове поново претворили у низ, користите исти СЕЛЕЦТ упит у љусци док га користите са малом абецедном функцијом поља (). На доњем излазу можете бацити поглед да је низ прво претворен у редове, а затим су одабране само различите вредности. Коначно, редови ће се поново претворити у низ.

>> СЕЛЕЦТ низ (СЕЛЕЦТ ДИСТИНЦТ УННЕСТ ('2,85, 2.73, 2.85, 1.8, 2.73 ':: флоат []));

Закључак:

Коначно, успешно сте применили сваки пример из овог водича. Надамо се да нисте имали проблема током извођења УННЕСТ (), ДИСТИНЦТ и арраи () методе у примерима.

Како инсталирати и играти Доом на Линук-у
Увод у Доом Доом серија настала је 90-их година након објављивања оригиналног Доом-а. То је био тренутни хит и од тог времена надаље серија игара је д...
Вулкан за кориснике Линука
Са сваком новом генерацијом графичких картица видимо да програмери игара помичу границе графичке верности и долазе на корак од фотореализма. Али упрко...
ОпенТТД вс Симутранс
Стварање сопствене симулације превоза може бити забавно, опуштајуће и изузетно примамљиво. Због тога морате да испробате што више игара како бисте про...