Substring() függvény SQL Serverben: Használat példával

⚡ Okos összefoglaló

SUBSTRING() függvény SQL Serverben, pl.tracEgy karakter, szöveg vagy bináris kifejezés egy részét adja vissza, egy kiválasztott kezdőpozícióból kiindulva meghatározott számú karaktert ad vissza, és természetes módon párosul a CHARINDEX függvénnyel elválasztójel-alapú elemzéshez.

  • ✂️ Cél: A SUBSTRING() függvény egy karakterlánc egy adott részét adja vissza, a forráskifejezés, a kezdőpozíció és a hosszúság függvényében.
  • 🔢 Három érv: A kifejezés, a kezdőpozíció és a teljes hossz mind kötelező az SQL Server SUBSTRING() függvényében.
  • 📍 Egy alapú index: A kezdőpozíció 1-es alapú, tehát az első karakter számít az első pozíciónak, ami elkerüli az egyenkénti hibákat.
  • ???? A CHARINDEX-szel: A SUBSTRING() és a CHARINDEX() függvények párosítása elválasztójelet és ex karaktert keres.tracaz előtte vagy utána lévő szöveget.
  • ↔️ BAL és JOBB oldallal szemben: A LEFT() és RIGHT() függvénnyel ellentétben a SUBSTRING(), pl.tracts karakterek bármely pozícióból, nem csak a végekről.
  • ⚠️ Szélsőséges esetek: A NULL hossz NULL értéket ad vissza, míg a karakterláncon túli hossz a maradékot adja vissza hibajelzés nélkül.

SUBSTRING() függvény SQL Serverben TSQL példákkal

Mi az a Substring()?

A SUBSTRING() egy függvény a következőben: SQL , amely lehetővé teszi a felhasználó számára, hogy igény szerint egy adott karakterláncból részkarakterláncot származtasson. SUBSTRING() pl.tracEgy megadott hosszúságú karakterláncot ad vissza, amely egy adott helyről indul a bemeneti karakterláncban. A SUBSTRING() célja az SQL-ben, hogy a karakterlánc egy adott részét adja vissza.

A részstring() szintaxisa

SUBSTRING(Expression, Starting Position, Total Length)

Itt:

  • A SUBSTRING() kifejezés a SQL Server lehet bármilyen karakter, bináris szám, szöveg vagy kép. A Kifejezés az a forráskarakterlánc, amelyből az alkarakterlánc lekérésre kerül.
  • A Kezdő pozíció határozza meg a kifejezésben azt a pozíciót, ahonnan az új alkarakterláncnak kezdődnie kell.
  • A Teljes hossz a kifejezésből származó részkarakterlánc teljes várható hossza, a kezdőpozíciótól kezdve.

A SUBSTRING() használatának szabályai

  • Mindhárom argumentum kötelező az MS SQL SUBSTRING() függvényben.
  • Ha a Kezdő pozíció nagyobb, mint a kifejezésben megengedett maximális karakterszám, akkor az SQL Server SUBSTRING() függvénye semmit sem ad vissza.
  • A teljes hossz meghaladhatja az eredeti karakterlánc maximális karakterhosszát. Ebben az esetben az eredményül kapott részkarakterlánc a teljes karakterlánc, a kifejezés kezdő pozíciójától a kifejezés utolsó karakteréig.

Az alábbi ábra a SUBSTRING() függvény használatát szemlélteti az SQL Serverben:

Diagram, amely bemutatja, hogyan működik a SUBSTRING() függvénytracts karakterek egy kezdőpozícióból egy adott hosszúságon belül

T-SQL részkarakterlánc-példák

Feltételezés: Tegyük fel, hogy van egy ' nevű táblánkGuru99' két oszloppal és négy sorral, ahogy az alább látható. Ezt fogjuk használni:Guru99 lábas asztal a következő példákban:

Guru99 minta tábla a Tutorial_ID és a Tutorial_name oszlopokkal, amelyeket a SUBSTRING példákban használtak

1. lekérdezés: SUBSTRING() az SQL-ben, amelynek hossza kisebb, mint a kifejezés teljes maximális hossza.

SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;

Eredmény: Az alábbi ábra a 'Tutorial_name' oszlop alkarakterláncát jeleníti meg 'SUB' oszlopként. A kezdőpozíció 1, a hossz 2, tehát az első két karakter kerül visszaadásra:

Az eredményrács a Tutorial_name első két karakterét adja vissza SUB oszlopként.

2. lekérdezés: SUBSTRING() az SQL Serverben, amelynek hossza nagyobb, mint a kifejezés teljes maximális hossza.

SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;

Eredmény: Az alábbi diagram a 'Tutorial_name' oszlop alkarakterláncát jeleníti meg 'SUB' oszlopként. Annak ellenére, hogy az alkarakterlánc hossza nagyobb, mint a kifejezés teljes maximális hossza, nem keletkezik hiba, és a lekérdezés a teljes karakterláncot adja vissza a kezdőpozíciótól kezdve:

Az eredményrács a Tutorial_name fennmaradó részét adja vissza, ha a kért hossz meghaladja a karakterláncot.

SUBSTRING CHARINDEX-szel az SQL Serverben

A SUBSTRING() függvény egy nagyon gyakori valós felhasználási módja a következő:tracolyan szöveg, amely egy elválasztójel előtt vagy után áll, például a domain egy e-mail címben. Önmagában a SUBSTRING() függvénynek fix kezdőpozícióra van szüksége, de az elválasztójel pozíciója soronként változik. A CHARINDEX() függvény ezt úgy oldja meg, hogy visszaadja egy karakter pozícióját egy karakterláncon belül:

CHARINDEX(substring_to_find, expression [, start_location])

A CHARINDEX() függvény SUBSTRING() függvénybe ágyazásával a kezdőpozíció dinamikussá válik. Az alábbi példa megtalálja a következőt: @ szimbólum, és mindent visszaad, ami utána van. A változó a minta értékét tartalmazza:

DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com';
SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;

Itt a CHARINDEX('@', @Email) megkeresi a @ szimbólum pozícióját, az 1 hozzáadása mögé lép, majd a SUBSTRING() függvény végrehajtja az ex karaktert.traca fennmaradó karaktereket. A fenti érték esetén a lekérdezés a következő tartományt adja vissza: guru99.comEz a CHARINDEX-plusz-SUBSTRING minta a strukturált karakterláncok elemzésének szabványos módja a T-SQL-ben.

SUBSTRING vs. LEFT és RIGHT az SQL Serverben

Az SQL Server a LEFT() és RIGHT() függvényeket is biztosítja karakterek kinyerésére egy karakterlánc elejéről vagy végéről. Ezek rövidebbek, de a két végére korlátozódnak. A SUBSTRING() a legrugalmasabb, mivel bármely pozícióban kezdődhet. Az alábbi táblázat összehasonlítja őket:

Funkció érvek Extracts-től Egyenértékű SUBSTRING()
BALRA(kifejezés, n) 2 A karakterlánc kezdete SUBSTRING(kifejezés, 1, n)
JOBB(kifejezés, n) 2 A húr vége SUBSTRING(kifejezés, LEN(kifejezés) – n + 1, n)
SUBSTRING(kifejezés, kezdet, hossz) 3 Bármilyen pozíciót Nem alkalmazható

Röviden, a LEFT() és RIGHT() függvények kényelmes gyorsbillentyűk a karakterláncok végeinek lekérdezésére, míg a SUBSTRING() az általános eseteket kezeli, beleértve a középről vett karaktereket is.

Negatív, nulla és NULL argumentumok a SUBSTRING függvényben

Az alapszabályokon túl hasznos tudni, hogyan viselkedik a SUBSTRING() az éleken. Amikor a kezdőpozíció nulla vagy negatív, az SQL Server kiszámítja a (kezdet + hossz – 1) effektív hosszt, és az első pozíciótól kezdi az olvasást. Ha bármelyik argumentum NULL, az eredmény NULL. Az alábbi táblázat, a hivatalos adatokkal összehasonlítva ALSTRING (Transact-SQL) hivatkozás, ezeket az eseteket mutatja be:

Hívás Eredmény Ok
SUBSTRING('Guru99', 1, 4) Guru Normál hívás: négy karakter az első pozíciótól.
SUBSTRING('Guru99', 0, 3) Gu Kezdjük egy alatt: a tényleges hossz 0 + 3 – 1 = 2.
SUBSTRING('Guru99', 4, 100) u99 A karakterláncon túli hossz hiba nélkül visszaadja a maradékot.
SUBSTRING('Guru99', 3, NULL) NULL Egy NULL argumentum a teljes eredményt NULL-lá teszi.

Ezen szélső esetek ismerete megakadályozza a meglepetéseket, amikor a kiindulási pozíciót egy másik oszlopból vagy egy változó ami lehet nulla vagy NULL.

GYIK

Az SQL Server a SUBSTRING() függvényt használja; a SUBSTR() a benne használt név. Oracle és a MySQLMindkettő egy karakterlánc egy részét adja vissza, de a SUBSTRING() a Transact-SQL szabványos függvénye, így a SUBSTR() nem fog futni SQL Serveren.

Igen. Mivel a SUBSTRING() értéket ad vissza, az megjelenhet a WHERE, SELECT és ORDER BY záradékokban. A SUBSTRING() szűrése általában megakadályozza az indexkeresést, így a LIKE minta gyakran gyorsabb az előtagkereséseknél.

Igen, de az SQL Server először karakterlánccá alakítja az értéket, akár implicit módon, akár CAST vagy CONVERT használatával. A kezdő pozíció és a hossz ezután karaktereket számol, nem számjegyeket vagy dátum részeket, ezért az értéket gondosan formázza.

A háromargumentumos forma hasonlóan viselkedik, de a részletekben eltér. MySQL A SUBSTR() függvényt és a negatív kezdőpozíciókat is engedélyezi, míg az SQL Server a SUBSTRING() függvényt használja, és az egy alatti kezdést egy effektív hossz szabály szerint kezeli.

A SUBSTRING() függvény ugyanazt a kategóriát adja vissza, mint a bemenete: varchar karakteres adatok esetén, nvarchar Unicode szöveg esetén és varbinary bináris kifejezések esetén. A hossz a kért alkarakterlánctól függ, nem a teljes forrásoszloptól.

Tekerjükping Ha a SUBSTRING() függvényben egy WHERE záradékon belüli oszlop van, az predikátum nem másolható, így az SQL Server nem használhat indexkeresést az adott oszlopon. Előtag-egyezések esetén a LIKE 'value%' minta általában jobban teljesít.

Igen. GitHub másodpilóta természetes nyelvi promptból SUBSTRING() és CHARINDEX() kifejezéseket hozhat létre, beleértve az elválasztójel-alapú elemzést is. A lekérdezés futtatása előtt mindig ellenőrizze a kezdőpozíciót, a hosszt és az 1-alapú indexelést.

A mesterséges intelligencia és a gépi tanuláson alapuló asszisztensek a közérthető angol szabályokat SUBSTRING(), CHARINDEX(), LEFT() és RIGHT() kombinációkká fordítják, hosszszámításokat javasolnak, és jelzik az egyenkénti hibákat. A fejlesztő minden javaslatot helyesség szempontjából ellenőrz, mielőtt telepítené.

Foglald össze ezt a bejegyzést a következőképpen: