[SQL Basic] Kuidas töötada stringi funktsioonidega SQL-is - My SQL CONCAT, LENGTH, SUBSTR

# 17. Turundus / andmete analüüs algajatele

Selles õpetuses õpime tundma funktsioone, mida saate stringi andmete hõlpsaks ja kiireks manipuleerimiseks kasutada. Stringide jaoks on mitmesuguseid funktsioone ja mõnikord on erinevatel andmebaasidel, näiteks Oracle, SQL Server ja MySQL, erinevad meetodid. Katame stringi andmed MySQL-i alusel.

#Glossary:

Lesson 3: VALI / FROM / KUS
Lesson 4: TELLIMUS
Lesson 5: JA / VÕI / IN
Lesson 6: LIKE
Lesson 7: AS / DISTINCT / IS NULL
EssLesson 9: COUNT / SUM
EssLesson 10: AVG / MAX / MIN
Õppetund 11: RÜHMIGE / HALDAMINE
EssLesson 12: JUHTUM
EssLesson 13: sisemine liitumine
Lesson 14: VÄLJAS VASAK LIITUMINE / VÄLISÕIGE ÕIGE LIITUMINE
Lesson 15: TARVIKUD
Lesson 16: DATE_FORMAT / DATEDIFF

#Sisukord

Päring 1. Ühendage kliendi ees- ja perekonnanimi veerud, et teha uus täisnime veerg (CONCAT)
SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi FROM klient;
Päring 2. Arvestagem kliendi täisnime pikkust (LENGTH)
SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi, PIKKUS (CONCAT (eesnimi, perekonnanimi)) AS pikkus_nimi kliendilt;
Päring 3. Prinditakse välja ainult kolm kliendi nime tähemärki (SUBSTR)
SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi, SUBSTR (CONCAT (eesnimi, ““, perekonnanimi), 1, 3) AS lühinimi FROM klient;

Q1. Uue täisnime veeru (CONCAT) saamiseks ühendage kliendi ees- ja perekonnanime veerud

Kõigepealt vaatame klientide tabelit.

VALI * kliendilt;

Tabelis on toodud erinevatesse veergudesse salvestatud kliendi ees- ja perekonnanimed. Võib-olla vajate keerukamates päringutes täisnime koos, nii et on hea teada, kuidas need kaks ühte liini ühendada. Ja nende kahe ühendamiseks MySQL-is saate kasutada CONCAT-i.

#CONCAT

Alustage selle täpsustamisega, millist veergu soovite näha: kliendi ID
VALI klient_id

Tahame näha ka täisnime, nii et kasutagem ees- ja perekonnanime ühendamiseks CONCAT-i. Tühiku lisamiseks kahe vahele peame selle eraldi asetama ja topeltjutumärkidega esile tooma (“”). Eraldage kõik kolm komadega:
CONCAT (eesnimi, “”, perekonnanimi)

Nimetage see uus veerg täisnimeks ümber:
AS täisnimi

Ja lõpuks sulgege see tabeli nime ja semikooloniga. Teie täielik ja viimane päring näeb välja järgmine:
SELECT customer_id, CONCAT (eesnimi, “”, perekonnanimi) AS täisnimi FROM klient;

️ Kasutage päringu vormindamiseks SQLGate'is F9 !!

CONCATi päringusse saate lisada ka mõne lisateksti:

SELECT customer_id, CONCAT ("Tere. Olen", eesnimi, "", perekonnanimi) ASi täisnimi kliendilt;

Tere! Meeldiv tutvuda!

Q2. Loetakse kliendi täisnime pikkus (ees- ja perekonnanime tähemärgid).

Mõnikord on vaja arvutada nööri pikkus. Kasutame selleks LENGTH päringut. See funktsioon aktsepteerib stringi andmeid sisendväärtusena, arvutab, mitu märki sellel on, ja väljastab numbrid (arvutab baitide põhjal).

# PIKKUS

Võite kasutada stringe või stringi veerge otse funktsioonis PIKKUS, kuid selle näite jaoks kasutame äsja õpitud päringut CONCAT. Eelmises näites oli funktsiooni CONCAT tulemuseks string, mis vastas kliendi nimele (täisnimi), et saaksime seda probleemideta kasutada. Kuid kui numbriliste arvutuste jaoks kasutatakse CONCAT-i, ei saa te seda päringut korrata.

Siin on visuaalne jaotus selle kohta, mida see päring teeb:

Nii et kõigepealt määrake funktsioonis SELECT veerud, mida soovite vaadata:
SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi

Ja siis lisage funktsioon PIKKUS. Tahame arvestada ees- ja perekonnanimes iga tähega, va varasema lisatud tühikuga, nii et kirjutame oma CONCAT-funktsiooni ümber pikkuseks. See peaks välja nägema järgmine:
PIKKUS (CONCAT (eesnimi, perekonnanimi))

Minge edasi ja nimetage uus veerg ümber Nimi pikkus ja sulgege päring:
AS-i nimi_pikkus kliendilt;

Lõplik päring näeb välja järgmine:

SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi, PIKKUS (CONCAT (eesnimi, perekonnanimi)) AS name_length FROM klient;

Tore! Aga miks me seda tegime? Miks peame teadma kliendinimede pikkust? Peame seda funktsiooni oma praktikaaja küsimuses mõistma. Näete seda hiljem uuesti. Jätkame nüüd ~

Q3. Prinditakse välja ainult kolm kliendi nime tähemärki (kolm esimest ja kolm viimast).

Funktsiooni SUBSTR kasutatakse ainult osa täielikust stringi eraldamiseks. See võimaldab teil ka seada lähtepositsiooni ja täpsustada, mitu märki soovite eraldada.

#SUBSTR

Jätkakem meie varasema päringu kasutamist. Alusta valimisega:
SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi)

Ärge unustage uut veergu ümber nimetada:
AS täisnimi

Seejärel ühendage SUBSTR ja selle sisemus, dubleerige oma funktsioon CONCAT. Siin on meil mõtlemiseks kaks uut tegurit. Esiteks peame täpsustama lähtepositsiooni. Kuna me soovime, et see algaks kohe alguses, kasutame numbrit 1. Järgmisena peame märkima, mitu nime tähemärki me trükkida tahtsime. Ütleme ainult 3 tähemärki:
SUBSTR (CONCAT (eesnimi, ““, perekonnanimi), 1, 3)

Siin on visuaalne näide sellest, mida SUBTR teeb:

Nimetage ka see veerg ümber:
AS lühinimi

Sulgege see funktsiooniga FROM:
Kliendilt;

Teie viimane päring peaks välja nägema järgmine:

SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi, SUBSTR (CONCAT (eesnimi, ““, perekonnanimi), 1, 3) AS lühinimi FROM klient;

Nii et nüüd näeme ainult iga nime kolme esimest tähemärki! MARY SMITHist on saanud just MAR. Kena!

Oletame, et tahame printida ainult stringi viimase 3 tähemärki. Kuidas saaksime sellega hakkama? See on natuke raske. Kuna kõigi nimede pikkus on erinev, ei saa me täpset asukohta arvestada. Kuid mida me teha saame, on minna tahapoole! Lihtsalt öelge SQLGate'ile, et soovite kõigi nimede korral tagasi 3 positsiooni tagasi minna ja sealt alustada. Saame seda teha, kirjutades negatiivse 3 (-3). See peaks välja nägema selline:

SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi, SUBSTR (CONCAT (eesnimi, ““, perekonnanimi), 1, 3) AS lühinimi FROM klient;

Algusasendi saate stringi esiosas seada positiivsete numbrite abil või sättida stringi tagaosa negatiivsete numbrite abil.

#Praktika aeg

Printige klientide nimede ja nende tsenseeritud e-kirjade loend (kasutades CONCAT, SUBSTR, REPEAT, LENGTH)

Kliendi isikliku teabe (nt nimi, aadress ja telefoninumber) käsitlemisel tuleb seda käsitleda ilma seda paljastamata. Kasutades seni õpitud funktsioone, kasutagem kliendi tabelit kliendi e-posti asendamiseks stringiga, mida pole võimalik tuvastada.

Me kasutame e-kirja tsenseerimiseks CONCAT-i ja SUBSTR-i. Esiteks kasutage CONCAT, et saada klientide täisnimed. Seejärel kasutage e-kirja hankimiseks CONCAT ja SUBSTR koos, selle tsenseerimiseks kasutage REPEAT ja INSTR ning veeru ümbernimetamiseks kasutage AS-i.

REPEAT: korrake stringi nii mitu korda kui soovite
STRINSTR: tagastab stringi esmakordse esinemise positsiooni teises stringi

Tulemus näeb välja järgmine:

Kas olete natuke segaduses? Jagageme selle järgmiselt:

Alustage funktsioonist SELECT ja seejärel jätkake esimese veeruga, mida soovite vaadata, veergu Client ID:
VALI klient_id

Kasutage CONCATi, et ühendada klientide ees- ja perekonnanimed ning nimetada uus veerg täisnimeks:
CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi

Kasutage uuesti salajase e-posti veeru loomiseks CONCATi, toimides järgmiselt.

  1. Printige klientide e-posti aadressi 3 esimest tähte SUBSTRi abil
    (SUBSTR (e-post, 1, 3)
  2. INSTR abil tuvastame stringi (e-posti aadressi) ja määrame stringi soovitud lähtekohana teatud tähemärgi (@).
    INSTR (e-post, '@')
  3. Kuna me tahame e-kirja tsenseerida, peame panema tärnid (*), et järelejäänud pikkus (tähemärgid) täidetaks pärast originaali 3, mille me printisime. Kuna see pikkus on iga meili puhul erinev, peame seda korrama nii mitu korda kui vaja, nii et kasutagem REPEAT. Samuti lahutame sümboli @ jaoks 1 (-1) ja meilisõnumi 3 trükitud teksti korral lahutame 3 (-3), nii et teavet ei tsenseerita.
    KORDA ('*', INSTR (e-post) -1-3)
  4. Lisage domeeninimi stringi ja sulgege funktsioon CONCAT:
    '@ Sakilacustomer.org')
  5. Pange uus veerg ümber ja kirjutage tabeli nimi:
    AS secret_email kliendilt;

Päringu (F5) käivitamisel prinditakse nende e-posti esimesed 3 tähemärki, millele järgnevad tärnid, mis tsenseerivad ülejäänud isiklikku teavet! Siin on täielik päring koos:

SELECT customer_id, CONCAT (eesnimi, ““, perekonnanimi) AS täisnimi, CONCAT (SUBSTR (e-post, 1, 3), REPEAT ('*', INSTR (email, '@') - 1–3), REZEAT), '@sakilacustomer. org ') AS secret_email kliendilt;

See võib tunduda mõnevõrra keeruline, kuid pole keeruline määratleda iga stringi, mida soovite korraga näha, ja seejärel ühendada see funktsiooniga CONCAT. Ehkki me demonstreerisime nende funktsioonide puhul ainult üldkasutatavat tava, on nende kasutamiseks palju muid võimalusi. Katsetage nendega, et leida õige

Kui teile meeldib rohkem visuaalseid juhiseid, vaadake meie videoõpetust allpool:

# Õppevideo

Klõpsake SQLGate'i tasuta versiooni allalaadimiseks

# [SQL põhiseeria] - turundus / andmete analüüs algajatele

1. Mis on SQL? - andmebaasi tutvustus
2. SQLGate'i allalaadimine ja andmebaasiga ühendamine
3. Milliseid andmeid on filmi tabelis? - VALI / FROM / KUS
4. Kuidas sorteerida filmiloendeid hinna (renditasu) järgi? - TELLIMUS
5. Kas ma saan rentida 3-tunnise filmi 0,99 dollari eest? - JA / VÕI / IN
6. Kuidas leida põnevat filmi? - LIKE
7. Kuidas veerge ümber nimetada ja kordumatuid väärtusi näha? - AS / DISTINCT / IS NULL
8. Vaatame andmebaasi näidistabeleid!
9. Milline on kõigi filmide summaarne pikkus kokku? - COUNT / SUM
10. Milline on filmi keskmine pikkus? - AVG / MIN / MAX
11. Kui paljudel filmidel on sama reiting? - RÜHMIGE POOLT
12. Määrake väärtus, mis põhineb rendi kestusel. - JUHTUM
13. Uurime filmide žanreid tabelite liitmise kaudu! - Siseühendus
14. Vaatame filmide rentimist varude nimekirja järgi! - VASAK / PAREM LIITUMINE
15. Leidkem kliente, kes on laenutanud filme hinnaga 9,99 dollarit! - alam päringud
16. Kuidas töötada SQL-i kuupäevafunktsioonidega - DATE_FORMAT, DATEDIFF
17. Kuidas töötada stringi funktsioonidega SQL-is - CONCAT, LENGTH, SUBSTR
18. Kasutagem mõnda numbrilist SQL-funktsiooni - TRUNCATE, ROUND, MOD