Интелигентни начини за използване на низ за свързване на SQL

Интелигентни начини за използване на низ за свързване на SQL

език за структурирани заявки (SQL) е изключително мощен инструмент, който е пълен с функции. След като овладеете най -много важни SQL команди , можете да започнете да ставате малко по -креативни с вашия SQL. Днес ще ви покажа всичко, което трябва да знаете за низовете за конкатенация на SQL.





Има много различни SQL диалекти. За всички тези примери използвам PostgreSQL вариант.





как да разбера дали ssd се проваля

Какво е конкатенация?

Конкатенацията означава да се съединят две неща заедно. Може да сте го използвали в език за програмиране, за да свържете два низа заедно. Може би имате променливи за име и фамилия, които сте обединили като променлива за пълно име.





Конкатенацията е много полезен начин за комбиниране на два низа в един. PHP използва точка, за да свърже низове заедно, докато JavaScript и jQuery използват знак плюс.

Конкатенацията в SQL работи абсолютно еднакво. Използвате специален оператор, за да обедините две неща в едно. Ето пример в Псевдокод :



first_name = Joe
last_name = Coburn
whole_name = first_name + last_name

В езиците за програмиране конкатенацията прави кода по -лесен за четене. Ако вашият код винаги има нужда от достъп до два низа, комбинирането им в един улеснява запомнянето и намалява дължината на кода.

Докато променливите в SQL са по -рядко срещани (но все още се използват), конкатенацията все още е необходима за връщане на комбинирани резултати или за манипулиране на данни.





Как да свързваме

Съединението е много лесно в SQL. Въпреки че SQL е общ език, отделните механизми за бази данни реализират функции по различни начини. Въпреки че всички тези примери са на диалект на PostgreSQL, лесно е да се преведат на други варианти, като просто потърсите в мрежата „Concatenate“. Различните двигатели могат да имат различен синтаксис за конкатенация, но принципът остава същият.

Връщайки се към нашия пример за име, ето едно основно изберете заявка:





SELECT first_name, last_name, email FROM users_table

Тук няма нищо сложно, така че нека добавим конкатенацията:

SELECT first_name || last_name AS full_name, email FROM users_table

Както можете да видите, това свързване работи перфектно, но има един малък проблем. Полученото пълно име е съчетано точно като продукт на двете колони - трябва да има интервал между имената!

За щастие е лесно да се поправи: просто затворете пространство между двете:

SELECT first_name || ' ' || last_name AS full_name, email FROM users_table

Това са основни примери, но трябва да видите как работи свързването - наистина е толкова лесно! Операторът на тръби ( | ) се използва два пъти между клаузи. Вашият SQL двигател знае, че всяка част преди и след този символ трябва да се обедини и да се третира като една. Внимавайте обаче, ако използвате оператора concat, но не свързвате нищо, ще получите грешка.

Както бе споменато по -горе, тези примери използват PostgreSQL вариант на SQL. Други варианти могат да използват различен оператор или дори специална функция, която трябва да извикате. Всъщност няма значение как свързвате низове, като го правите по начина, по който двигателят на вашата база данни очаква.

Отивате по -дълбоко

Сега, когато знаете основите, нека разгледаме някои задълбочени примери, заедно с някои често срещани клопки.

Повечето механизми за бази данни успешно ще съчетаят смес от низове и цели числа, може би дори дати. Обикновено ще се сблъскате с проблеми, когато се опитвате да обедините сложни типове като масиви:

SELECT first_name || ' ' || last_name || ARRAY[123, 456] AS full_name, email FROM users_table

Този код няма да работи. Не е възможно да се комбинират низове със сложни обекти като масиви. Ако мислите какво трябва да направите, често можете да напишете прост код, който работи, а не сложен, луд код, който не се изпълнява.

Ако сте обмислили внимателно какво трябва да направите и все още не можете да накарате SQL да работи, тогава помислили ли сте да използвате език за програмиране? Като разработчик на софтуер, работещ върху наследствен код, знам болката от опитите за отстраняване на грешки в SQL, че някой е натъпкал толкова много логика, че е чудно, че изобщо работи - ако се опитвате да пишете логика в SQL, тогава преминете към език за програмиране (има много лесни за изучаване езици).

Свързването работи много добре за където изявления също:

SELECT first_name, last_name, email FROM users_table WHERE date_of_birth = ('DAY' || '/' || 'MONTH' || '/' || 'YEAR')::date

Тук се случват няколко неща. В този пример, ДЕН , МЕСЕЦ , и ГОДИНА са параметри, които са предадени от скрипт. Може би те са генерирани по код или са въведени от потребител. Те се свързват заедно и след това се предават към тип дата (използвайки синтаксиса за предаване на PostgreSQL за дата ::дата ).

Използването на конкатенация по този начин ви позволява да свържете заедно отделните части на дата, която след това може да бъде обработена като „реална“ дата, за разлика от низ. Не забравяйте, че този основен пример не предпазва от SQL инжектиране, така че не го използвайте в произволен код, без да го променяте.

Друга клопка, на която трябва да внимавате, е нула стойности (нулев низ е празен или несъществуващ низ). Като се има предвид това запитване:

SELECT first_name || ' ' || NULL AS full_name, email FROM users_table

Тази заявка безшумно се проваля. Това се дължи на начина, по който конкатенацията е вътрешно кодирана във вашия двигател на база данни. Не винаги може да срещнете този проблем, но това е доста често срещано явление.

Ако смятате, че данните, които връща вашата заявка, може да са нулеви, тогава ще трябва да използвате a сливат се . Coalesce може грубо да се мисли като „ако това е нула, заменете го с този друг низ или колона“:

SELECT first_name || ' ' || COALESCE(NULL, 'ERROR NULL DATA') AS full_name, email FROM users_table

Сега знаете как да използвате конкатенацията в SQL, какво ще направите с нея? Ще направете уебсайт и да го оживя с SQL? Или може би се нуждаете от генератор на статични сайтове за по -опростен подход при изграждането на уебсайтове.

Каквото и да правите, уведомете ни в коментарите по -долу!

i3 срещу i5 срещу i7 срещу i9
Дял Дял Туит електронна поща 6 Звукови алтернативи: Най -добрите безплатни или евтини приложения за аудиокниги

Ако не искате да плащате за аудиокниги, ето няколко страхотни приложения, които ви позволяват да ги слушате безплатно и законно.

Прочетете Напред
Свързани теми
  • Програмиране
  • Програмиране
  • SQL
За автора Джо Кобърн(136 статии са публикувани)

Джо е завършил компютърни науки от университета в Линкълн, Великобритания. Той е професионален разработчик на софтуер и когато не лети с дронове или пише музика, често може да бъде намерен да прави снимки или да произвежда видеоклипове.

Още от Джо Кобърн

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате