Slimme manieren om een SQL-aaneenschakelingsreeks te gebruiken
Structured Query Language (SQL) is een opmerkelijk krachtige tool en een die boordevol functies zit. Zodra u de belangrijkste SQL-opdrachten onder de knie hebt 13 Belangrijkste SQL-opdrachten Willekeurige programmeur 13 Belangrijkste SQL-opdrachten Willekeurige programmeurs Elke grote of dynamische website gebruikt op een bepaalde manier een database en in combinatie met Structured Query Language (SQL) , de mogelijkheden voor het manipuleren van data zijn echt eindeloos. Lees Meer, u kunt wat creatiever worden met uw SQL. Vandaag laat ik je alles zien wat je moet weten over SQL-aaneenschakelingsstrings.
Er zijn veel verschillende SQL-dialecten. Voor al deze voorbeelden gebruik ik de PostgreSQL-variant.
Wat is aaneenschakeling?
Aaneenschakeling betekent twee dingen samen doen. Je hebt het misschien in een programmeertaal gebruikt om twee reeksen samen te voegen. Misschien hebt u een voornaam en achternaam variabelen die u samengevoegd hebt als een volledige naamvariabele.
Aaneenschakeling is een zeer nuttige manier om twee strings in één te combineren. PHP gebruikt een punt om samen tekenreeksen samen te voegen, terwijl JavaScript en jQuery Een basisgids voor JQuery voor Javascript-programmeurs Een basisgids voor JQuery voor Javascript-programmeurs Als u een Javascript-programmeur bent, helpt deze gids bij JQuery u coderen als een ninja. Meer lezen Gebruik een plusteken.
Concatenatie in SQL werkt precies hetzelfde. U gebruikt een speciale operator om twee dingen samen te voegen. Hier is een voorbeeld in Pseudocode:
first_name = Joe last_name = Coburn whole_name = first_name + last_name
In programmeertalen maakt concatenatie code gemakkelijker leesbaar. Als uw code altijd toegang moet hebben tot twee strings, kunt u deze combineren in een code waardoor deze gemakkelijker te onthouden is en de lengte van de code wordt verkort.
Hoewel variabelen in SQL minder vaak voorkomen (maar nog steeds worden gebruikt), is samenvoeging nog steeds nodig om gecombineerde resultaten te retourneren of om gegevens te manipuleren.
Hoe te concateneren
Aaneenschakeling is heel eenvoudig in SQL. Hoewel SQL een gemeenschappelijke taal is, implementeren individuele databasemotoren functies op verschillende manieren. Hoewel al deze voorbeelden in het PostgreSQL-dialect voorkomen, is het eenvoudig om naar andere varianten te vertalen door simpelweg op internet te zoeken. “Concatenate
Teruggaand naar ons voorbeeld, hier is een basis kiezen query:
SELECT first_name, last_name, email FROM users_table
Niets ingewikkelds hier, dus laten we de concatenate toevoegen:
SELECT voornaam_| achternaam als volledige naam, e-mail van users_table
Zoals u kunt zien, heeft deze aaneenschakeling perfect gewerkt, maar er is een klein probleempje. De resulterende volledige naam is precies aan elkaar geplakt als het product van beide kolommen - er moet een spatie tussen de namen zijn!
Gelukkig is het eenvoudig op te lossen: eenvoudig een spatie tussen de twee maken:
SELECT first_name || "|| last_name AS volledige_naam, email FROM users_table
Dit zijn basisvoorbeelden, maar u zou moeten zien hoe aaneenschakeling werkt - het is echt zo eenvoudig! De pipe-operator (|) wordt twee keer gebruikt tussen clausules. Uw SQL-engine weet dat elk onderdeel vóór en na dit symbool moet worden samengevoegd en als één moet worden behandeld. Maar wees voorzichtig, als je de concat-operator gebruikt, maar niets concurreert, krijg je een foutmelding.
Zoals hierboven vermeld, gebruiken deze voorbeelden de PostgreSQL-variant van SQL. Andere varianten kunnen een andere operator gebruiken, of zelfs een speciale functie die u moet bellen. Het maakt niet echt uit hoe u maakt een reeks aaneenschakelingen, op voorwaarde dat u dit doet op de manier die uw database-engine verwacht.
Dieper gaan
Nu u de basiskennis kent, laten we eens kijken naar enkele diepgaande voorbeelden, samen met enkele veelvoorkomende valkuilen.
De meeste database-engines zullen met succes een combinatie van strings en gehele getallen, misschien zelfs datums, concateren. Meestal kom je problemen tegen bij het samenvoegen van complexe typen, zoals arrays:
SELECT first_name || "|| last_name || ARRAY [123, 456] ALS volledige naam, email FROM users_table
Deze code zal niet werken. Het is niet mogelijk om strings te combineren met complexe objecten zoals arrays. Als u nadenkt over wat u moet doen, kunt u vaak eenvoudige code schrijven die werkt, in plaats van complexe, gekke code die niet wordt uitgevoerd.
Als u goed hebt nagedacht over wat u moet doen en de SQL nog steeds niet kunt laten werken, heeft u dan overwogen een programmeertaal te gebruiken? Als softwareontwikkelaar die werkt met oude code, weet ik dat het lastig is om SQL te debuggen, dat iemand zoveel logica heeft opgepikt dat het een wonder is dat het überhaupt draait - als je logica in SQL wilt schrijven en dan naar een programma wilt overschakelen taal (er zijn genoeg eenvoudige talen om te leren 6 Eenvoudigste programmeer talen om te leren voor beginners 6 Eenvoudigste programmeertalen om te leren voor beginners Leren om te programmeren gaat net zo goed over het vinden van de juiste taal als over het stichtingsproces. gemakkelijkste programmeertalen voor beginners Lees meer).
Aaneenschakeling werkt heel goed voor waar verklaringen ook:
SELECT voornaam, achternaam, e-mailadres FROM users_table WHERE date_of_birth = ('DAY' || '/' || 'MONTH' || '/' || 'YEAR') :: datum
Er gebeuren hier een paar dingen. In dit voorbeeld, DAG, MAAND, en JAAR zijn parameters die zijn doorgegeven vanuit een script. Misschien zijn deze gegenereerd door code of ingevoerd door een gebruiker. Deze worden samengevoegd en vervolgens naar een datumtype gegoten (met de syntaxis van de cast Casting to date op PostgreSQL ::datum).
Door samenvoeging op deze manier te gebruiken, kunt u de afzonderlijke delen van een datum samenvoegen, die vervolgens kunnen worden verwerkt als een “echt” datum, in tegenstelling tot een string. Vergeet niet dat dit eenvoudige voorbeeld niet beschermt tegen SQL-injectie Wat is een SQL-injectie? [MakeUseOf Explains] Wat is een SQL-injectie? [MakeUseOf Explains] De wereld van internetbeveiliging wordt geplaagd door open poorten, achterdeurtjes, gaten in de beveiliging, Trojaanse paarden, wormen, kwetsbaarheden voor firewalls en een hele reeks andere problemen die ons dagelijks scherp houden. Voor privé-gebruikers ... Lees meer, dus gebruik het niet in een productiecode zonder het te wijzigen.
Een andere valkuil om op te letten is nul waarden (een nulstring is een lege of niet bestaande reeks). Gezien deze vraag:
SELECT first_name || "|| NULL AS full_name, email FROM users_table
Deze query mislukt stil. Dit komt door de manier waarop concatenatie intern is gecodeerd in uw database-engine. U zult dit probleem misschien niet altijd tegenkomen, maar het is een veel voorkomende gebeurtenis.
Als u denkt dat de gegevens die uw query retourneert mogelijk null zijn, moet u een samensmelten. Coalesce kan ruwweg worden gezien als “als dit null is, vervangt u het door deze andere tekenreeks of kolom”:
SELECT first_name || "|| COALESCE (NULL, 'ERROR NULL DATA') ALS volledige naam, email FROM users_table
Nu weet u hoe u concatenatie in SQL moet gebruiken, wat gaat u ermee doen? Maak je een website Hoe maak je een website: voor beginners Hoe maak je een website: voor beginners Vandaag begeleid ik je bij het maken van een compleet nieuwe website. Maak je geen zorgen als dit moeilijk klinkt. Ik zal je er bij elke stap doorheen leiden. Meer lezen en het opfleuren met SQL? Of misschien hebt u een statische site generator nodig 7 Redenen om uw CMS te sloten en een statische site-generator te overwegen 7 Redenen om uw CMS te sloten en een statische site-generator te overwegen Het publiceren van een website was jarenlang moeilijk voor veel gebruikers. CMS's zoals WordPress veranderden dat, maar ze kunnen nog steeds verwarrend zijn. Een ander alternatief is een Static Site Generator. Lees meer voor een eenvoudigere aanpak bij het bouwen van websites.
Wat je ook doet, laat het ons weten in de reacties hieronder!
Meer informatie over: Programmeren, SQL.