Chytré způsoby použití řetězce zřetězení SQL

Chytré způsoby použití řetězce zřetězení SQL

strukturovaný dotazovací jazyk (SQL) je pozoruhodně výkonný nástroj, který je plný funkcí. Jakmile zvládnete nejvíc důležité příkazy SQL , můžete začít být se svým SQL trochu kreativnější. Dnes vám ukážu vše, co potřebujete vědět o řetězcích zřetězení SQL.





Existuje mnoho různých dialektů SQL. Pro všechny tyto příklady používám PostgreSQL varianta.





jaký kódovací jazyk používá jednota

Co je zřetězení?

Zřetězení znamená spojit dvě věci dohromady. Možná jste jej použili v programovacím jazyce ke spojení dvou řetězců dohromady. Možná máte proměnné jména a příjmení, které jste spojili jako proměnnou celého jména.





Zřetězení je velmi užitečný způsob kombinace dvou řetězců do jednoho. PHP používá tečku ke spojení řetězců dohromady, zatímco JavaScript a jQuery používají znaménko plus.

Zřetězení v SQL funguje úplně stejně. Pomocí speciálního operátora spojíte dvě věci do jedné. Zde je příklad v Pseudo kód :



first_name = Joe
last_name = Coburn
whole_name = first_name + last_name

V programovacích jazycích zřetězení usnadňuje čtení kódu. Pokud váš kód vždy potřebuje přístup ke dvěma řetězcům, jejich kombinace do jednoho usnadňuje zapamatování a snižuje délku kódu.

Zatímco proměnné v SQL jsou méně časté (ale stále se používají), zřetězení je stále potřeba k vrácení kombinovaných výsledků nebo k manipulaci s daty.





Jak zřetězit

Zřetězení je velmi snadné v SQL. Zatímco SQL je běžný jazyk, jednotlivé databázové stroje implementují funkce různými způsoby. I když jsou všechny tyto příklady v dialektu PostgreSQL, je snadné je přeložit do jiných variant prostým vyhledáním výrazu „Concatenate“ na webu. Různé motory mohou mít odlišnou syntaxi pro zřetězení, ale princip zůstává stejný.

Když se vrátíme k našemu příkladu jména, tady je základní vybrat dotaz:





SELECT first_name, last_name, email FROM users_table

Není to nic složitého, přidejme tedy zřetězení:

SELECT first_name || last_name AS full_name, email FROM users_table

Jak vidíte, toto zřetězení fungovalo perfektně, ale je tu jeden malý problém. Výsledné celé jméno bylo spojeno přesně jako součin obou sloupců - mezi názvy by měla být mezera!

Naštěstí je snadné to opravit: jednoduše vytvořte mezeru mezi těmito dvěma:

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

Toto jsou základní příklady, ale měli byste vidět, jak funguje zřetězení - je to opravdu tak snadné! Provozovatel potrubí ( | ) se používá dvakrát mezi doložkami. Váš SQL engine ví, že každá část před a za tímto symbolem by měla být spojena dohromady a považována za jednu. Buďte však opatrní, pokud používáte operátor concat, ale nic nespojujete, zobrazí se chyba.

Jak již bylo uvedeno výše, tyto příklady používají variantu PostgreSQL jazyka SQL. Jiné varianty mohou používat jiného operátora nebo dokonce speciální funkci, kterou musíte zavolat. To je vlastně jedno jak zřetězíte řetězce, pokud to uděláte způsobem, který váš databázový stroj očekává.

Jít hlouběji

Nyní, když znáte základy, podívejme se na některé hloubkové příklady spolu s některými běžnými nástrahami.

Většina databázových strojů úspěšně pojme směs řetězců a celých čísel, možná dokonce i data. Při pokusu o zřetězení složitých typů, jako jsou pole, obvykle narazíte na problémy:

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

Tento kód nebude fungovat. Není možné kombinovat řetězce se složitými objekty, jako jsou pole. Pokud přemýšlíte o tom, co musíte udělat, můžete často psát jednoduchý kód, který funguje, než složitý, bláznivý kód, který nelze spustit.

Pokud jste si dobře rozmysleli, co musíte udělat, a stále nemůžete spustit SQL, zvažovali jste použití programovacího jazyka? Jako vývojář softwaru pracující na starším kódu znám bolest při pokusu o ladění SQL, do kterého někdo nacpal tolik logiky, že je zázrak, že vůbec běží - pokud se pokoušíte psát logiku v SQL, přepněte na programovací jazyk (existuje mnoho snadno se učících jazyků).

Zřetězení funguje velmi dobře kde také prohlášení:

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

Děje se tu pár věcí. V tomto případě DEN , MĚSÍC , a ROK jsou parametry, které byly předány ze skriptu. Možná byly generovány kódem nebo zadány uživatelem. Ty jsou spojeny dohromady a poté přeneseny na typ data (pomocí syntaxe PostgreSQL přetypování na datum) ::datum ).

Toto zřetězení vám tímto způsobem umožňuje spojit jednotlivé části data, které lze poté zpracovat jako „skutečné“ datum, na rozdíl od řetězce. Nezapomeňte, že tento základní příklad nechrání před injekcí SQL, takže jej nepoužívejte v žádném produkčním kódu bez úprav.

Další úskalí, na které si dát pozor, je nula hodnoty (nulový řetězec je prázdný nebo neexistující řetězec). Vzhledem k tomuto dotazu:

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

Tento dotaz tiše selže. Důvodem je způsob interního kódování zřetězení ve vašem databázovém stroji. S tímto problémem se nemusíte vždy setkat, ale je to docela běžný jev.

Pokud si myslíte, že data, která váš dotaz vrací, mohou mít hodnotu null, budete muset použít a splývat . Coalesce lze zhruba považovat za „pokud je toto nulové, nahraďte jej tímto jiným řetězcem nebo sloupcem“:

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

Nyní víte, jak používat zřetězení v SQL, co s ním budete dělat? Budeš vytvořit web a oživit to SQL? Nebo možná potřebujete generátor statických stránek pro jednodušší přístup k vytváření webových stránek.

Ať uděláte cokoli, dejte nám vědět v níže uvedených komentářích!

amazon říká doručeno, ale ne zde
Podíl Podíl tweet E-mailem 6 zvukových alternativ: Nejlepší bezplatné nebo levné aplikace pro audioknihy

Pokud vás nebaví platit za audioknihy, zde je několik skvělých aplikací, které vám umožní poslouchat je zdarma a legálně.

Číst dále
Související témata
  • Programování
  • Programování
  • SQL
O autorovi Joe Coburn(136 publikovaných článků)

Joe je absolventem informatiky na University of Lincoln, UK. Je profesionálním vývojářem softwaru, a když zrovna neletí drony nebo nepíše hudbu, často ho lze zastihnout při fotografování nebo produkci videí.

Více od Joe Coburn

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru