Kapcsolatok

Az SQL karaktereket ad a sor elejére. SQL karakterlánc-függvények – használati példák. Szimbolikus függvények sql nyelven

Továbbra is tanulmányozzuk az SQL lekérdezési nyelvet, és ma erről fogunk beszélni SQL karakterlánc-függvények... Leírjuk az alapvető és gyakran használt karakterlánc-függvényeket, mint például: LECSERÉLÉS, NYÍRÁS, CSERÉLÉSés mások, mindent meg fogunk vizsgálni, természetesen példákon keresztül.

SELECT név || vezetéknév AS FIO FROM táblázatból

Vagy szóközzel való elválasztáshoz írja be

SELECT név || "" || vezetéknév AS FIO FROM táblázatból

azok. két függőleges sáv két oszlopot egyesít egybe, és hogy szóközzel elválasztjam őket, szóközt teszek közéjük ( bármilyen karakter használható, például kötőjel vagy kettőspont) aposztrófokkal és két függőleges sávval kombinálva ( A Transact-SQL a + jelet használja két függőleges sáv helyett).

INITCAP funkció

Aztán van egy nagyon hasznos funkció is, INITCAP- amely visszaadja az értéket egy karakterláncban, amelyben minden szó nagybetűvel kezdődik és kisbetűvel folytatódik. Erre akkor van szükség, ha nem követed az egyik vagy másik oszlop kitöltési szabályait, és hogy az egészet szép formában jelenítsd meg, használhatod ezt a funkciót, például a táblázatodban a név oszlopban lévő rekordok a következő űrlapot: IVAN ivanov vagy petr Petrov, ezt a funkciót használja.

SELECT INITCAP (név) AS FIO FROM FROM

És így fogod kapni.

UPPER funkció

Egy hasonló függvény, csak minden nagybetűs karaktert ad vissza, ez az FELSŐ.

SELECT UPPER (név) AS FIO FROM FROM

  • név - az oszlop neve;
  • 20 - karakterek száma ( mező hossza);
  • A „-” egy karakter, amelyet a kívánt számú karakterre ki kell tölteni.

RPAD funkció

Tekintsük rögtön az inverz függvényt. RPAD- a művelet és a szintaxis megegyezik az LPAD-éval, csak a jobb oldali karakterek vannak kitöltve ( a bal oldali LPAD-ban).

SELECT RPAD (név, 20, "-") AS név FROM táblából

Iván —————-
Szergej -----

LTRIM funkció

A Next is hasznos funkció bizonyos esetekben, LTRIM- ez a funkció eltávolítja a megadott bal szélső karaktereket. Például van egy „város” oszlop az adatbázisában, amelyben a város „Moszkva”-ként van feltüntetve, és vannak olyan városok is, amelyek egyszerűen „Moszkva”-ként vannak feltüntetve. De a jelentést csak "Moszkva" formában kell megjelenítenie "g" nélkül. Csak megad valamiféle "g" mintát és ha a bal szélső karakterek "g"-vel kezdődnek, akkor ezek a karakterek egyszerűen nem jelennek meg.

SELECT LTRIM (város, "város") AS gorod FROM asztalból

Ez a funkció beolvassa a bal oldali karaktereket, ha a sor elején nincs karakter a mintában, akkor visszaadja a cella eredeti értékét, ha van, akkor törli azokat.

RTRIM funkció

Vessünk egy pillantást az inverz függvényre is. RTRIM- ugyanaz, mint az LTRIM, csak a karaktereket keresi a jobb oldalon.

Jegyzet! A Transact-SQL-ben az RTRIM és az LTRIM függvények eltávolítják a szóközöket jobbról, illetve balról.

REPLACE funkció

Most nézzünk meg egy olyan érdekes függvényt, mint CSERE- egy karakterláncot ad vissza, amelyben az összes egyező karakter az Ön által megadott karakterekre lesz cserélve. Mire használható, például az adatbázisában vannak olyan oszlopok, amelyekben néhány elválasztó szimbólum található, például "/". Például: Ivan / Ivanov, és szeretné megjeleníteni az Ivan-Ivanovot, majd írjon

SELECT REPLACE (név, "/", "-") FROM táblázatból

és lesz egy szimbólumcsere.

Ez a függvény csak a karakterek teljes egyezését helyettesíti, ha például "-"-t ad meg, pl. csak három kötőjelet fog keresni, és nem cserél le minden egyes gondolatjelet, ellentétben a következő funkcióval.

TRANSLATE funkció

FORDÍT- egy karakterlánc-függvény, amely a karakterlánc összes karakterét lecseréli az Ön által megadott karakterekre. A függvény neve alapján sejthető, hogy ez egy teljes soremelés. A különbség e függvény és a REPLACE között az, hogy minden megadott karaktert lecserél, pl. Három karaktered van, mondjuk az abc és a TRANSLATE segítségével le tudod cserélni abc-re, így a = a, b = b, c = c lesz, és ennek az elvnek megfelelően minden egyezésű karakter lecserélődik. És ha a REPLACE-re cserélte, akkor csak a sorban elhelyezkedő abc szimbólumok teljes egyezését kereste.

SUBSTR funkció

SUBSTR- ez a függvény csak a megadott karaktertartományt adja vissza. Más szóval, mondjuk egy 10 karakterből álló sztringet, és nem kell mind a tíz, de tegyük fel, hogy csak 3-8 ( a harmadiktól a nyolcadikig). Ezzel a funkcióval ezt könnyen megteheti. Például van egy fix hosszúságú azonosítója az adatbázisban (például AA-BB-55-66-CC), és minden karakterkombináció jelent valamit. És egy szép pillanatban azt mondták neked, hogy csak 2 és 3 karakterkombinációt jeleníts meg, ehhez írj egy lekérdezést a következő formában.

SELECT SUBSTR (ident, "4", "8") FROM táblázatból

azok. minden karaktert kinyomtatunk, 4-től 8-ig, és a lekérdezés után ezt kapjuk:

LENGTH függvény - húrhossz

A következő funkció is jól jöhet, az HOSSZ- ami csak számolja a karakterek számát egy sorban. Például meg kell találni, hogy hány karakter van egy oszlop egyes celláiban, mondjuk "név", egy ilyen táblázat.

SELECT LENGTH (név) FROM táblázatból

ezt a kérést követően megkapja ezt.

4
6
7

Itt vagyunk veled, és megvizsgáltuk az alapvető SQL karakterlánc-függvényeket. A következő cikkekben folytatjuk az SQL feltárását.

SQL karakterlánc-függvények

Ez a funkciócsoport lehetővé teszi a szöveg kezelését. Számos karakterlánc-függvény létezik, a leggyakoribbakat tekintjük át.
  • CONCAT (str1, str2 ...) Az argumentumok összefűzésével létrehozott karakterláncot ad vissza (az argumentumok zárójelben vannak megadva - str1, str2 ...). Például a szállítói táblázatunkban van egy város és egy cím oszlop. Tegyük fel, hogy azt szeretnénk, hogy a cím és a város ugyanabban az oszlopban jelenjen meg a kapott táblázatban, pl. két oszlop adatait szeretnénk egyesíteni egybe. Ehhez a CONCAT () string függvényt fogjuk használni, és argumentumként megadjuk a kombinált oszlopok nevét - város és cím:

    SELECT CONCAT (város, cím) szállítóktól;


    Vegye figyelembe, hogy az összevonás szétválasztás nélkül történt, ami nem túl olvasható. Módosítsuk a lekérdezésünket úgy, hogy az egyesített oszlopok között szóköz legyen:

    SELECT CONCAT (város, "", cím) a szállítóktól;


    Mint látható, a szóköz is érvnek számít, és vesszővel választják el. Ha több oszlopot kellene összekötni, akkor irracionális lenne minden alkalommal szóközt feltüntetni. Ebben az esetben használhatjuk a string függvényt CONCAT_WS (határoló, str1, str2...), amely elválasztót helyez el az összefűzendő karakterláncok közé (az elválasztó az első argumentumként van megadva). A kérésünk ekkor így nézne ki:

    SELECT CONCAT_WS ("", város, cím) szállítóktól;

    Az eredmény kívülről nem változott, de ha 3 vagy 4 oszlopot összefűznénk, akkor a kód jelentősen csökkenne.


  • INSERT (str, pos, len, new_str) Visszaadja azt az str karakterláncot, amelyben a pos pozícióból kezdődő és a len karakterek hosszúságú részkarakterláncát a new_str részkarakterláncra cserélték. Tegyük fel, hogy úgy döntünk, hogy nem jelenítjük meg az első 3 karaktert a cím oszlopban (rövidítések st., Stb. stb.), akkor ezeket szóközökre cseréljük:

    SELECT INSERT (cím, 1, 3, "") A szállítóktól;


    Ez azt jelenti, hogy az elsővel kezdődő három karaktert három szóközzel helyettesítjük.


  • LPAD (str, len, dop_str) Az str karakterláncot adja vissza, a dop_str karakterrel balra kitöltve len hosszúságúra. Tegyük fel, hogy azt szeretnénk, hogy a beszállítói városok a jobb oldalon legyenek a beszállítói városok megjelenítésekor, és az üres helyet pontokkal töltsük ki:

    LPAD SELECT (város, 15, ".") A szállítóktól;



  • RPAD (str, len, dop_str) Az str karakterláncot adja vissza, a dop_str karakterrel jobbra kitömve len hosszúságúra. Tegyük fel, hogy azt szeretnénk, ha a beszállító városok a bal oldalon legyenek, és a beszállítói városok megjelenítésekor az üres helyet töltsük ki pontokkal:

    RPAD VÁLASZTÁSA (város, 15, ".") A szállítóktól;


    Vegye figyelembe, hogy a len korlátozza a megjelenítendő karakterek számát, pl. ha a város neve 15 karakternél hosszabb, akkor a rendszer csonkolja.


  • LTRIM (str) Az str karakterláncot adja vissza, az összes kezdő szóköz eltávolításával. Ez a karakterlánc funkció kényelmes az információk helyes megjelenítéséhez olyan esetekben, amikor az adatok megadásakor megengedettek a véletlenszerű szóközök:

    SELECT LTRIM (város) FROM szállítók;


  • RTRIM (str) Az str karakterláncot adja vissza az összes záró szóköz eltávolításával:

    SELECT RTRIM (város) a szállítóktól;

    Esetünkben nem volt több szóköz, így kifelé nem fogjuk látni az eredményt.


  • TRIM (str) Az str karakterláncot adja vissza az összes kezdő és záró szóköz eltávolításával:

    SELECT TRIM (város) FROM szállítók;


  • LOWER (str) Az str karakterláncot adja vissza, az összes karaktert kisbetűvé alakítva. Nem működik megfelelően az orosz betűkkel, ezért jobb, ha nem használja. Alkalmazzuk például ezt a függvényt a város oszlopra:

    VÁLASSZA ki várost, LOWER (város) az eladóktól;


    Látod, milyen halandzsa lett belőle. De a latin ábécével minden rendben van:

    SELECT LOWER ("VÁROS");



  • UPPER (str) Az str karakterláncot adja vissza, minden karakterrel nagybetűvel. Orosz betűkkel is jobb, ha nem használjuk. De a latin ábécével minden rendben van:

    SELECT UPPER (e-mail) AZ ügyfelektől;



  • LENGTH (str) Az str karakterlánc hosszát adja vissza. Például nézzük meg, hány karakter van a beszállítói címeinkben:

    SELECT cím, LENGTH (cím) FROM szállítók;



  • LEFT (str, len) Az str karakterlánc len bal karaktereit adja vissza. Tegyük fel például, hogy csak az első három karakter jelenik meg a szállító városokban:

    SELECT név, BALRA (város, 3) A szállítóktól;



  • RIGHT (str, len) Az str string len jobb karaktereit adja vissza. Tegyük fel például, hogy csak az utolsó három karakter jelenik meg a szállító városokban: SELECT LOAD_FILE ("C: / proverka");
    Kérjük, vegye figyelembe, hogy meg kell adnia a fájl abszolút elérési útját.

Mint már említettük, sokkal több karakterlánc-függvény létezik, de még az itt felsoroltak közül is néhányat ritkán használnak. Tehát itt fejezzük be áttekintésünket, és áttérünk a gyakrabban használt dátum- és időfüggvényekre.

Mások. A következő szintaxissal rendelkezik:

CONV (szám, N, M)

Érv szám A függvény M bázissá alakítja, és az értéket karakterláncként adja vissza.

1. példa

A következő lekérdezés a decimális 2-es számot binárissá alakítja:

SELECT CONV (2,10,2);

Pozíció: 10

A 2E szám hexadecimálisról decimálisra konvertálásához a következő lekérdezés szükséges:

SELECT CONV ("2E", 16.10);

Pozíció: 46

Funkció CHAR () lefordítja az ASCII kódot karakterláncokká. A következő szintaxissal rendelkezik:

CHAR (n1, n2, n3 ..)

2. példa

SELECT CHAR (83.81.76);

Eredmény: SQL

A következő függvények egy karakterlánc hosszát adják vissza:

  • HOSSZ (húr);
  • OCTET_LENGTH (karakterlánc);
  • CHAR_LENGTH (karakterlánc);
  • CHARACTER_LENGTH (karakterlánc).

3. példa

SELECT LENGTH ("MySQL");

Eredmény: 5

Néha hasznos funkció BIT_LENGTH (karakterlánc) amely visszaadja a karakterlánc hosszát bitekben.

4. példa

SELECT BIT_LENGTH ("MySQL");

Pozíció: 40

Funkciók részkarakterláncokkal való munkához

Az alkarakterláncot általában egy karakterlánc egy részének nevezik. Gyakran meg kell találni egy részkarakterlánc első előfordulásának helyét a karakterláncban. Három függvény oldja meg ezt a problémát a MySQL-ben:

  • LOCATE (részkarakterlánc, karakterlánc [, pozíció]);
  • HELYZET (részkarakterlánc, karakterlánc);
  • INSTR (karakterlánc, részkarakterlánc).

Ha az alsztring nem szerepel a karakterláncban, akkor mindhárom függvény 0 értéket ad vissza. Az INSTR () függvény argumentumai sorrendjében különbözik a másik kettőtől. A LOCATE () függvénynek lehet egy harmadik argumentuma pozíció, amely lehetővé teszi, hogy egy karakterláncban egy részstringet ne az elejétől, hanem egy megadott pozícióból keressen.

5. példa

SELECT LOCATE ("Topaz", "Open Joint Stock Company Topaz");

Pozíció: 31

POZÍCIÓ KIVÁLASZTÁSA ("Topaz", "Topáz nyílt részvénytársaság");

Pozíció: 31

SELECT INSTR ("Topaz Nyílt Részvénytársaság", "Topaz");

Pozíció: 31

HELYET KIVÁLASZTÁS ("Topaz", "Topaz Plant and Topaz LLC", 9);

Pozíció: 20

SELECT LOCATE ("Almaz", "Open Joint Stock Company Topaz");

Eredmény: 0

Funkciók BAL (karakterlánc, N)és JOBBRA (karakterlánc, N) visszaadja a bal szélső, illetve a jobb szélső N karaktert a karakterláncban.

6. példa

SELECT LEFT ("MySQL DBMS", 4);

Eredmény: DBMS

JOBBRA KIVÁLASZTÁS ("MySQL DBMS", 5);

Eredmény: MySQL

Néha olyan részkarakterláncot szeretne kapni, amely egy adott pozícióban kezdődik. Ehhez a következő funkciókat kell használni:

  • SUBSTRING (karakterlánc, pozíció, N);
  • MID (húr, pozíció, N).

Mindkét függvény a megadott karakterlánc N karakterét adja vissza, a megadott pozíciótól kezdve.

7. példa

SELECT SUBSTRING ("A MySQL DBMS az egyik legnépszerűbb DBMS", 6,5);

Eredmény: MySQL

Ha e-mail címekkel és webhelycímekkel dolgozik, a funkció nagyon hasznos SUBSTR_INDEX ()... A függvénynek három argumentuma van:

SUBSTR_INDEX (karakterlánc, határoló, N).

Az N argumentum lehet pozitív vagy negatív. Ha negatív, akkor a függvény megkeresi a határoló N-edik előfordulását, jobbról számolva. Ezután visszaadja a talált határolótól jobbra lévő részstringet. Ha N pozitív, akkor a függvény megkeresi a bal oldali határoló N-edik előfordulását, és visszaadja a talált határolótól balra lévő részstringet.

8. példa

SUBSTRING_INDEX KIVÁLASZTÁSA ("www.mysql.ru", ".", 2);

Eredmény: www.mysql

SUBSTRING_INDEX KIVÁLASZTÁSA ("www.mysql.ru", ".", - 2);

Eredmény: mysql.ru

Funkció CSERE (karakterlánc, karakterlánc1, részkarakterlánc2) lehetővé teszi, hogy az 1. rész összes előfordulását egy karakterláncban lecserélje a string2 karakterláncra.

Az alapvető karakterlánc-függvények és operátorok számos lehetőséget biztosítanak, és ennek eredményeként egy karakterlánc-értéket adnak vissza. Egyes karakterlánc-függvények kételemesek, ami azt jelenti, hogy egyszerre két karakterláncon is működhetnek. Az SQL 2003 szabvány támogatja a karakterlánc-függvényeket.

Összefűzési operátor

Az SQL 2003 meghatározza az összefűzési operátort (||), amely két különálló karakterláncot egyetlen karakterlánc-értékké fűz össze.

DB2 platform

A DB2 platform támogatja az SQL 2003 összefűzési operátort és annak szinonimáját, a CONCAT függvényt.

MySQL platform

A MySQL platform támogatja a CONCATQ függvényt, amely az SQL 2003 összefűzési operátor szinonimája.

Oracle és PostgreSQL

A PostgreSQL és az Oracle platformok támogatják az SQL 2003 dupla függőleges sáv összefűzési operátorát.

SQL Server platform

Az SQL Server platform a plusz jelet (+) használja az SQL 2003 összefűzési operátorának szinonimájaként. Az SQL Server biztosítja a CONCAT_NULL_YIELDS_NULL rendszerparamétert, amely vezérli a rendszer viselkedését, amikor NULL értékeket észlel a karakterláncértékek összefűzésekor.

/ * SQL 2003 szintaxis * /

stringl || string2 || string3

karakterlánc1karakterlánc2karakterlánc3

/ * MySQL esetén * /

CONCAT ("stringl", "string2")

Ha az összefűzött értékek bármelyike ​​üres, akkor a rendszer egy üres karakterláncot ad vissza. Ezen túlmenően, ha egy numerikus érték is részt vesz az összefűzésben, akkor az implicit módon karaktersorozattá alakul.

SELECT CONCAT ("Saját", "bologna", "van", "a", "első", "név ...");

A bolognámnak van egy keresztneve

SELECT CONCAT ("Saját", NULL, "van", "első", "név ...");

KONVERTÁLÁS és FORDÍTÁS

A CONVERT funkció megváltoztatja a karaktersorozat megjelenítését a karakterkészleten belül és a leválogatást. Például a CONVERT függvény használható a karakterenkénti bitek számának megváltoztatására.

A TRANSLATE függvény egy karakterlánc értéket fordít le egyik karakterkészletből a másikba. Például a TRANSLATE funkcióval az angol karakterkészletből a kanji (japán) vagy cirill (orosz) karakterkészletre konvertálható az érték. Magának a fordításnak már léteznie kell – vagy az alapértelmezettnek, vagy a CREATE TRANSLATION paranccsal létrehozva.

SQL 2003 szintaxis

KONVERT (karakter_érték HASZNÁLATA karakter_konverzió_neve)

FORDÍTÁS (char_value USING translation_name)

A CONVERT függvény a karakterértéket a karakterkonverzió_neve paraméterben megadott névvel rendelkező karakterkészletté alakítja. A TRANSLATE függvény a karakterértéket a fordításnévben megadott karakterkészletre konvertálja.

A figyelembe vett platformok közül csak az Oracle támogatja az SQL 2003 szabványban meghatározott CONVERT és TRANSLATE függvényeket.Az Oracle TRANSLATE funkciója nagyon hasonló, de nem azonos az SQL 2003-val. Ebben a megvalósításban a függvény csak két argumentumot vesz fel, és csak az adatbázis karakterkészlete és a nemzeti nyelvet támogató karakterkészlet között fordít le.

A CONV függvény MySQL implementációja csak a számokat konvertálja egyik bázisról a másikra. De az SQL Serverben a CONVERT függvény megvalósítása nagyon gazdag funkciókban és megváltoztatja a kifejezés adattípusát, de minden más szempontból eltér az SQL 2003 szabvány CONVERT függvényétől A PostgreSQL platform nem támogatja a CONVERT funkciót. függvényt, és a TRANSLATE függvény megvalósítása egy karakterlánc összes előfordulását bármely más karakterláncra konvertálja.

Db2

A DB2 platform nem támogatja a CONVERT funkciót, és a TRANSLATE funkció támogatása nem ANSI-kompatibilis. A TRANSLATE függvény részkarakterláncok konvertálására szolgál, és történelmileg az UPPER függvény szinonimája, mivel az UPPER függvény csak nemrég került hozzáadásra a DB2-hez. Ha a TRANSLATE függvényt a DB2-ben egyetlen karakteres kifejezési argumentummal használja, az eredmény ugyanaz a karakterlánc lesz nagybetűssé konvertálva. Ha a függvényt több argumentummal együtt használjuk, például TRANSLATE (ucmo4HUK, csere, egyezés), akkor a függvény a forrás összes olyan karakterét konvertálja, amely a match paraméterben is szerepel. A forrás minden olyan karaktere, amely az egyezési paraméterrel azonos pozícióban van, lecserélődik a helyettesítő paraméterből származó karakterre. Alább egy példa.

FORDÍTÁS ("Hello, World!") "HELLO; WORLD!"

FORDÍTÁS ("Hello, World1", "wZ", "1W") "Hewwo, Zorwd1

MySQL

A MySQL platform nem támogatja a TRANSLATE és CONVERT funkciókat.

Jóslat

Az Oracle platform a következő szintaxist támogatja a CONVERT és TRANSLATE funkciókhoz.

Az Oracle megvalósításban a CONVERT függvény egy karakterérték szövegét adja vissza, célkarakterkészletté alakítva. A karakter_érték a konvertálandó karakterlánc, a cél_karakterkészlet annak a karakterkészletnek a neve, amelyre a karakterláncot konvertálni kell, a forráskarakterkészlet pedig az a karakterkészlet, amelyben a karakterlánc értéke eredetileg tárolva volt.

Az Oracle TRANSLATE funkciója ANSI szintaxist követ, de két karakterkészlet közül csak egyet választhat: az adatbázis karakterkészletét (CHARJCS) és a nemzeti nyelv által támogatott karakterkészletet (NCHARJZS).

Az Oracle egy másik funkciót is támogat, más néven TRANSLATE (a USING kulcsszó használata nélkül). Ennek a TRANSLATE funkciónak semmi köze a karakterkészlet-átalakításhoz.

A cél és a forrás karakterkészlet neve karakterlánc-konstansként vagy táblázatoszlopra való hivatkozásként is átadható. Vegye figyelembe, hogy amikor egy karakterláncot olyan karakterkészletre konvertál, amely nem jeleníti meg az összes konvertálandó karaktert, helyettesítheti a helyettesítő karaktereket.

Az Oracle számos általános karakterkészletet támogat, köztük az US7ASCII, WE8DECDEC készleteket. WE8HP, F7DEC, WE8EBCDIC500, WE8PC850u WE8ISO8859PI. Például:

SELECT CONVERT ("Gro2", "US7ASCII", "WE8HP") FROM DUAL;

PostgreSQL

A PostgreSQL platform támogatja az ANSI CONVERT utasítást, és a konverziók itt a CREATE CONVERSION paranccsal definiálhatók. A TRANSLATE függvény PostgreSQL implementációja a függvények kiterjesztett készletét biztosítja, amelyek lehetővé teszik bármely szöveg más szöveggé konvertálását egy megadott karakterláncon belül.

TRANSLATE (karakterlánc, szövegből, szövegre)

Íme néhány példa:

SELECT TRANSLATE ("12345abcde", "5a", "XX"); "1234XXbcde" SELECT TRANSLATE (cím, "Számítógép", "PC") FROM címek WHERE type = "Személyi_számítógép" SELECT CONVERT ("PostgreSQL" HASZNÁLATA iso_8859_1_to_utf_8) "PostgreSQL"

SQL szerver

Az SQL Server nem támogatja a TRANSLATE funkciót. Az SQL Server CONVERT funkciójának megvalósítása nem felel meg az SQL 2003 szabványnak, ez a funkció az SQL Serverben egyenértékű a CAST funkcióval.

KONVERT (adattípus [(hossz) | (pontosság, lépték)], kifejezés, stílus])

A stíluszáradék a dátumkonverzió formátumának meghatározására szolgál. További információkért tekintse meg az SQL Server dokumentációját. Alább egy példa.

Cím KIVÁLASZTÁSA, KONVERTÁLÁS (char (7), ytd_sales) címekből ORDER BY cím GO

Ma azt javaslom, hogy fontolja meg az egyszerű használati példákat Transact-SQL karakterlánc-függvények, és nem csak néhány függvény leírása és példák, hanem azok kombinációja, pl. hogyan lehet őket egymásba ágyazni, hiszen sok feladat megvalósításához nem elegendőek a szabványos funkciók, és ezeket együtt kell használni. Ezért szeretnék néhány egyszerű példát mutatni az ilyen lekérdezések írására.

Az SQL karakterlánc-függvényeket már vizsgáltuk, de mivel ennek a nyelvnek a megvalósítása különböző DBMS-ekben eltérő, így például egyes függvények nem a Transact-SQL-ben vannak, de a PL / PGSql-ben igen, és legutóbb a string függvényeket néztük meg. amely használható a plpgsql-ben, ezért ma kifejezetten a Transact-SQL-ről fogunk beszélni.

Hogyan kombinálható a SUBSTRING, CHARINDEX és LEN

És így például egy sztringben egy részt kell keresni egy bizonyos kritérium szerint, és ki kell vágni, és nem csak egy azonos típusú részt kell keresni, hanem dinamikusan, pl. a keresési karakterlánc minden sornál eltérő lesz. A példákat a Management Studio SQL Server 2008-ban írjuk le.

Ehhez a következő függvényeket fogjuk használni:

  • SUBSTRING(str, start, len) - ez a függvény kivágja a karakterlánc egy részét egy másik karakterláncból. Három paramétere van 1. Ez maga a karakterlánc; 2. A kiindulási helyzet, ahonnan el kell kezdeni a vágást; 3. A karakterek száma, hány darabot kell kivágni.
  • CHARINDEX(str1, str2) - megkeresi az str1-et az str2-ben, és visszaadja az első karakter sorszámát, ha ilyen karakterlánc található. Van egy harmadik opcionális paramétere, amellyel megadható, hogy melyik oldalról indítsa el a keresést.
  • LEN(str1) a karakterlánc hossza, azaz. Karakterek.

Mint látható, itt a változók deklarációját használtam, és a változók helyett saját mezőket helyettesíthet a kérésben. Íme maga a kód:

A @rezult deklarálása varchar-ként (10) - kezdeti karakterlánc deklarálja az @ str1-et varchar-ként (100) - keresési karakterlánc deklarálja az @ str2-t varchar-ként (10) set @ str1 = "Tesztelje a karakterláncot egy másik karakterlánc kereséséhez" set @ str2 = "string" beállítása @ rezult = substring (@ str1, CHARINDEX (@ str2, @ str1), LEN (@ str2)) válassza a @rezult

A lényeg itt a következő: a len függvény segítségével megtudjuk, hány karaktert kell kivágni, a charindex pedig beállítja azt a pozíciót, ahonnan indul a vágás, és ennek megfelelően a substring elvégzi a kijelölést a karakterláncban.

Hogyan kombinálható a LEFT, RIGHT és LEN

Tegyük fel, hogy be kell szereznie egy karakterlánc első néhány karakterét, vagy ellenőriznie kell a karakterlánc első karaktereit, hogy van-e valami, például valamilyen szám, és ennek hossza természetesen eltérő (persze tesztpélda) .

  • Bal(str, kol) - a függvény kivágja a megadott számú karaktert balról, két paramétere van, az első egy karakterlánc, a második pedig a karakterek száma;
  • Jobb(str, kol) - a függvény jobbról kivágja a megadott számú karaktert, a paraméterek megegyeznek.

Most egyszerű lekérdezéseket fogunk használni a táblázathoz

Először hozzunk létre egy teszt_táblát:

TÁBLÁZAT LÉTREHOZÁSA (AZONOSÍTÓ (1,1) NEM NULL, (18, 0) NULL, (50) NULL, KORSZÍTÁS ELSŐDLEGES KULCS CLUSTERED (ASC) A(z) (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEYALLONS =ROWONCPOWONS) ) INDULÁS

Töltsük fel tesztadatokkal, és írjuk be a következő lekérdezéseket:

Amint érti, az első lekérdezés csak az összes sor kijelölése (SQL alapjai - select utasítás), a második pedig a funkcióink közvetlen kombinációja, itt van a kód:

Válassza ki a *-ot a teszt_táblából, válassza ki a számot, balra (szöveg, LEN (szám)) str-ként a teszt_táblázatból

És ha ezek a számok a jobb oldalon lennének, akkor a függvényt használnánk JOBB.

Az Rtrim, Ltrim, Upper és Lower kombináció használata

Feltéve, hogy van egy sor szóközzel az elején és a végén, és természetesen megszabadulna tőlük, és például elkészítené őket úgy, hogy ebben a sorban az első betű nagybetűssé váljon.

  • Rtrim(str) - eltávolítja a szóközöket jobbról;
  • Ltrim(str) - eltávolítja a szóközöket a bal oldalról;
  • Felső(str) - a karakterláncot nagybetűvé alakítja;
  • Alsó(str) - a karakterláncot kisbetűvé alakítja.

Mint látható, a javításhoz itt is használtunk Alkarakterláncés Len... A lekérdezés jelentése egyszerű, jobbról és balról is eltávolítjuk a szóközöket, majd az első karaktert kivágással nagybetűvé alakítjuk, majd ezt a karaktert összefűzzük (operátor +) a karakterlánc többi részével. Íme a kód:

@ str1 deklarálása mint varchar (100) beállítva @ str1 = "teszt karakterlánc kezdő és záró szóközökkel" kijelölés @ str1 kijelölés felső (substring (rtrim (ltrim (@ str1)), 1,1)) + alsó (substring ( rtrim () ltrim (@ str1)), 2, LEN (rtrim (ltrim (@ str1))) - 1))

Mára szerintem ennyi elég is, és ha szeretsz SQL-ben programozni, akkor ezen az oldalon már nem egyszer érintettük például ezt a nagyon érdekes témát.



Tetszett a cikk? Oszd meg