Smarte måter å bruke en SQL-sammenkoblingsstreng
Strukturert spørrespråk (SQL) er et bemerkelsesverdig kraftig verktøy, og en som er full av funksjoner. Når du har mestret de viktigste SQL-kommandoene 13 Viktigste SQL-kommandoer Enhver programmerer bør vite 13 Viktigste SQL-kommandoer Enhver programmerer burde vite Alt stort eller dynamisk nettsted bruker en database på noen måte, og i kombinasjon med Structured Query Language (SQL) , mulighetene for å manipulere data er virkelig endeløse. Les mer, du kan begynne å bli litt mer kreativ med SQL. I dag vil jeg vise deg alt du trenger å vite om SQL-sammenkoblingsstrenger.
Det er mange forskjellige SQL-dialekter. For alle disse eksemplene bruker jeg PostgreSQL-varianten.
Hva er sammenkobling?
Sammenkobling betyr å bli med to ting sammen. Du har kanskje brukt det på et programmeringsspråk for å bli med to strenger sammen. Kanskje du har et fornavn og etternavn variabler som du sluttet sammen som en full navn variabel.
Sammenketting er en veldig nyttig måte å kombinere to strenger med i en. PHP bruker et helt stopp for å bli med i strenger sammen, mens Javascript og jQuery En grunnleggende veiledning til JQuery for Javascript-programmerere En grunnleggende veiledning til JQuery for Javascript-programmerere Hvis du er en Javascript-programmerer, vil denne veiledningen til JQuery hjelpe deg med å starte kodingen som en ninja. Les mer bruk et plustegn.
Sammenkobling i SQL fungerer nøyaktig det samme. Du bruker en spesiell operatør for å bli med to ting i en. Her er et eksempel i Pseudocode:
first_name = Joe last_name = Coburn whole_name = first_name + last_name
I programmeringsspråk gjør sammenkobling koden lettere å lese. Hvis koden din alltid trenger å få tilgang til to strenger, blir det enklere å huske å kombinere dem til en, og reduserer kodenes lengde.
Mens variabler i SQL er mindre vanlige (men er fortsatt brukt), er det nødvendig med sammenkobling for å returnere kombinert resultat, eller å manipulere data.
Hvordan sammenkoble
Sammenkobling er veldig enkelt i SQL. Mens SQL er et felles språk, implementerer enkelte databasemotorer funksjoner på forskjellige måter. Mens alle disse eksemplene er i PostgreSQL dialekten, er det lett å oversette til andre varianter ved å bare søke på nettet for “Concatenate
Å gå tilbake til vårt navneksempel, her er en grunnleggende å velge spørsmål:
VELG first_name, last_name, email FROM users_table
Ingenting komplisert her, så la oss legge til i konkatenatet:
VELG førstenavn || Last_name AS full_name, email FROM users_table
Som du kan se, har denne sammenkoblingen virket perfekt, men det er et lite problem. Det resulterende fulle navnet har blitt sydd sammen akkurat som produktet fra begge kolonnene - det bør være mellomrom mellom navnene!
Heldigvis er det enkelt å fikse: Bare sett et mellomrom mellom de to:
SELECT first_name || "|| last_name AS full_name, email FROM users_table
Dette er grunnleggende eksempler, men du bør se hvordan sammenkobling fungerer - det er så enkelt! Røroperatøren (|) brukes to ganger mellom klausuler. Din SQL-motor vet at hver del før og etter dette symbolet skal slås sammen og behandles som en. Vær forsiktig, hvis du bruker concat-operatøren, men ikke konkluderer noe, vil du få en feil.
Som nevnt ovenfor bruker disse eksemplene PostgreSQL-varianten av SQL. Andre varianter kan bruke en annen operatør, eller til og med en spesialfunksjon du må ringe. Det spiller ingen rolle hvordan Du slår sammen strenger, forutsatt at du gjør det på den måten din databasemotor forventer.
Går dypere
Nå som du vet det grunnleggende, la oss se på noen dybdegående eksempler, sammen med noen vanlige fallgruver.
De fleste databasemotorer vil med hell inngå en blanding av strenger og heltall, kanskje til og med datoer også. Du vil vanligvis få problemer når du prøver å sammenkoble komplekse typer som arrays:
SELECT first_name || "|| last_name || ARRAY [123, 456] AS full_name, email FROM users_table
Denne koden vil ikke fungere. Det er ikke mulig å kombinere strenge med komplekse gjenstander som arrays. Hvis du tenker på hva du trenger å gjøre, kan du ofte skrive enkel kode som fungerer, i stedet for komplisert, gal kode som ikke klarer å løpe.
Hvis du har tenkt nøye på hva du trenger å gjøre, og fortsatt ikke kan få SQL til å fungere, har du vurdert å bruke et programmeringsspråk? Som en programvareutvikler som arbeider med arvskode kjenner jeg smerten i å prøve å feilsøke SQL at noen har crammed så mye logikk inn i det er et rart det kjører i det hele tatt - hvis du prøver å skrive logikk i SQL, så bytt til en programmering språk (det er mange enkle språk å lære 6 enkleste programmeringsspråk å lære for nybegynnere 6 enkleste programmeringsspråk å lære for nybegynnere Lære å programmere handler om å finne riktig språk like mye som det handler om oppbyggingsprosessen. Her er de seks øverste enkleste programmeringsspråk for nybegynnere. Les mer).
Sammenkobling fungerer veldig bra for hvor uttalelser også:
SELECT first_name, last_name, email FROM users_table WHERE date_of_birth = ('DAY' || '/' || 'Måned' || '/' || 'ÅR') :: dato
Det skjer noen ting her. I dette eksemplet, DAG, MÅNED, og ÅR er parametere som er sendt inn fra et skript. Kanskje disse har blitt generert av kode, eller angitt av en bruker. Disse er sammenkoblet sammen, og deretter kastet til en datatype (ved hjelp av PostgreSQL cast til dato syntaks ::Dato).
Ved hjelp av sammenkobling på denne måten kan du koble sammen de enkelte delene av en dato, som deretter kan behandles som en “ekte” dato, i motsetning til en streng. Ikke glem at dette grunnleggende eksemplet ikke beskytter mot SQL-injeksjon. Hva er en SQL-injeksjon? [MakeUseOf Forklarer] Hva er en SQL-injeksjon? [MakeUseOf Forklarer] Verden av Internett-sikkerhet er plaget av åpne porter, bakdører, sikkerhetshull, trojanere, ormer, brannmur sårbarheter og en rekke andre problemer som holder oss alle på tærne hver dag. For private brukere, ... Les mer, så ikke bruk det i noen produksjonskode uten å endre.
En annen fallgruve å passe på er null verdier (en null streng er en tom eller ikke eksisterende streng). Gitt denne spørringen:
SELECT first_name || "|| NULL AS full_name, email FROM users_table
Denne spørringen svikter tydeligvis. Dette skyldes måten sammenkobling er internt kodet på databasemotoren din. Du kan ikke alltid støte på dette problemet, men det er ganske vanlig.
Hvis du tror dataene du returnerer, kan være null, må du bruke en smelte sammen. Coalesce kan grovt tenkes som “Hvis dette er null, erstatt det med denne andre strengen eller kolonnen”:
SELECT first_name || "|| COALESCE (NULL, 'FEIL NULL DATA') AS full_name, email FROM users_table
Nå vet du hvordan du bruker sammenkobling i SQL, hva vil du gjøre med det? Vil du lage et nettsted Hvordan lage et nettsted: For nybegynnere Hvordan lage et nettsted: For nybegynnere I dag vil jeg veilede deg gjennom prosessen med å lage et komplett nettsted fra bunnen av. Ikke vær redd hvis dette høres vanskelig ut. Jeg vil lede deg gjennom det hvert skritt av veien. Les mer og lev det opp med SQL? Eller kanskje du trenger en statisk nettstedgenerator 7 Grunner til å ditch ditt CMS og vurdere en Static Site Generator 7 grunner til å ditch ditt CMS og vurdere en Static Site Generator I mange år var publisering av et nettsted vanskelig for mange brukere. CMS som WordPress endret det, men de kan fortsatt være forvirrende. Et annet alternativ er en statisk nettstedgenerator. Les mer for en enklere tilnærming til å bygge nettsteder.
Uansett hva du gjør, gi oss beskjed i kommentarene nedenfor!
Utforsk mer om: Programmering, SQL.