Substring() SQL Serverissä: Käyttö esimerkin avulla
⚡ Älykäs yhteenveto
SUBSTRING() SQL Serverissä esim.tracts osaa merkistä, tekstistä tai binäärilausekkeesta, palauttaa asetetun määrän merkkejä valitusta aloituskohdasta ja toimii luonnollisesti pareina CHARINDEX:n kanssa erotinmerkkipohjaista jäsennystä varten.

Mikä on Substring()?
SUBSTRING() on funktio kohdassa SQL jonka avulla käyttäjä voi johtaa alimerkkijonon mistä tahansa annetusta merkkijonosta tarpeen mukaan. SUBSTRING() esim.tracpalauttaa tietyn pituisen merkkijonon, joka alkaa tietystä kohdasta syötemerkkijonossa. SUBSTRING()-funktion tarkoitus SQL:ssä on palauttaa tietty osa merkkijonosta.
Alimerkkijono() syntaksi
SUBSTRING(Expression, Starting Position, Total Length)
Tässä:
- SUBSTRING()-lauseke funktiossa SQL Server voi olla mikä tahansa merkki, binääriluku, teksti tai kuva. Lauseke on lähdemerkkijono, josta alimerkkijono noudetaan.
- Aloituskohta määrittää lausekkeen kohdan, josta uuden alimerkkijonon tulisi alkaa.
- Kokonaispituus on lausekkeesta saatavan alimerkkijonon odotettu kokonaispituus aloituskohdasta alkaen.
Säännöt SUBSTRING()
- Kaikki kolme argumenttia ovat pakollisia MS SQL SUBSTRING() -funktiossa.
- Jos Aloituskohta on suurempi kuin lausekkeen merkkien enimmäismäärä, SQL Serverin SUBSTRING()-funktio ei palauta mitään.
- Kokonaispituus voi ylittää alkuperäisen merkkijonon enimmäismerkkipituuden. Tässä tapauksessa tuloksena oleva alimerkkijono on koko merkkijono lausekkeen aloituskohdasta lausekkeen viimeiseen merkkiin asti.
Alla oleva kaavio havainnollistaa SUBSTRING()-funktion käyttöä SQL Serverissä:
Esimerkkejä T-SQL-alimerkkijonoista
Oletus: Oletetaan, että meillä on taulukko nimeltä 'Guru99' kahdella sarakkeella ja neljällä rivillä, kuten alla on esitetty. Käytämme tätä 'Guru99' pöytä seuraavissa esimerkeissä:
Kysely 1: SUBSTRING() SQL:ssä, jonka pituus on pienempi kuin lausekkeen kokonaispituus.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Tulos: Alla oleva kaavio näyttää 'Tutorial_name'-sarakkeen alimerkkijonon 'SUB'-sarakkeena. Lähtökohta on 1 ja pituus on 2, joten kaksi ensimmäistä merkkiä palautetaan:
Kysely 2: SUBSTRING() SQL Serverissä, jonka pituus on suurempi kuin lausekkeen kokonaispituus.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Tulos: Alla oleva kaavio näyttää 'Tutorial_name'-sarakkeen alimerkkijonon 'SUB'-sarakkeena. Vaikka alimerkkijonon pituus on suurempi kuin lausekkeen kokonaispituus, virhettä ei synny ja kysely palauttaa koko merkkijonon lähtökohdasta eteenpäin:
SQL Serverin ALIMÄRJÄ ja CHARINDEX
Hyvin yleinen SUBSTRING()-funktion käyttö reaalimaailmassa on ilmaistatracTeksti, joka sijaitsee ennen tai jälkeen erotinmerkin, kuten sähköpostiosoitteen verkkotunnus. Itsessään SUBSTRING() tarvitsee kiinteän aloituskohdan, mutta erottimen sijainti vaihtelee riviltä toiselle. CHARINDEX()-funktio ratkaisee tämän palauttamalla merkin sijainnin merkkijonossa:
CHARINDEX(substring_to_find, expression [, start_location])
Sijoittamalla CHARINDEX()-funktion SUBSTRING()-funktion sisään, aloituskohdasta tulee dynaaminen. Alla oleva esimerkki löytää @ symboli ja palauttaa kaiken sen jälkeisen. A muuttuja sisältää otosarvon:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Tässä CHARINDEX('@', @Email) paikantaa @-symbolin sijainnin, lisäämällä 1 siirretään sen ohi, ja SUBSTRING() sitten extracts loput merkit. Yllä olevalla arvolla kysely palauttaa verkkotunnuksen guru99.comTämä CHARINDEX-plus-SUBSTRING-kuvio on T-SQL:n vakiotapa jäsentää strukturoituja merkkijonoja.
SUBSTRING vs. LEFT ja RIGHT SQL Serverissä
SQL Server tarjoaa myös LEFT()- ja RIGHT()-funktiot merkkijonon alusta tai lopusta merkkeihin. Ne ovat lyhyempiä kirjoittaa, mutta ne rajoittuvat kahteen päähän. SUBSTRING() on joustavin, koska se voi alkaa mistä tahansa kohdasta. Alla oleva taulukko vertailee niitä:
| Toiminto | argumentit | Extracts alkaen | Vastaava ALIMERKO() |
| VASEN(lauseke, n) | 2 | Merkkijonon alku | SUBSTRING(lauseke, 1, n) |
| OIKEA(lauseke, n) | 2 | Merkkijonon loppu | SUBSTRING(lauseke, LEN(lauseke) – n + 1, n) |
| SUBSTRING(lauseke, alku, pituus) | 3 | Mikä tahansa asema | Ei sovellettavissa |
Lyhyesti sanottuna LEFT() ja RIGHT() ovat käteviä oikopolkuja merkkijonon päille, kun taas SUBSTRING() käsittelee yleisen tapauksen, mukaan lukien keskeltä otetut merkit.
Negatiiviset, nolla- ja NULL-argumentit SUBSTRING-lausekkeessa
Perussääntöjen lisäksi on hyödyllistä tietää, miten SUBSTRING() käyttäytyy reunoilla. Kun aloituskohta on nolla tai negatiivinen, SQL Server laskee efektiivisen pituuden (alku + pituus – 1) ja aloittaa lukemisen kohdasta yksi. Kun mikä tahansa argumentti on NULL, tulos on NULL. Alla oleva taulukko, tarkistettuna virallista ALIMERKINTÄ (Transact-SQL) viite, näyttää nämä tapaukset:
| Puhelu | Tulos | Syy |
| SUBSTRING('Guru99', 1, 4) | Guru | Normaali kutsu: neljä merkkiä kohdasta yksi. |
| SUBSTRING('Guru99', 0, 3) | Gu | Aloita yhden alapuolelta: efektiivinen pituus on 0 + 3 – 1 = 2. |
| SUBSTRING('Guru99', 4, 100) | u99 | Merkkijonon jälkeinen pituus palauttaa jakojäännösarvon ilman virhettä. |
| SUBSTRING('Guru99', 3, TYHJÄ) | NULL | NULL-argumentti tekee koko tuloksesta NULLin. |
Näiden reunatapausten tunteminen estää yllätyksiä, kun lähtökohta lasketaan toisesta sarakkeesta tai muuttuja joka voi olla nolla tai NULL.




