Contacte

Sql adaugă caractere la începutul liniei. Funcții șir SQL - exemple de utilizare. Funcții simbolice în limbajul sql

Continuăm să studiem limbajul de interogare SQL, iar astăzi vom vorbi despre Funcții șiruri SQL... Vom acoperi funcțiile de bază și utilizate în mod obișnuit, cum ar fi: JOS, LTRIM, ÎNLOCUITși altele, vom lua în considerare totul, desigur, prin exemple.

SELECTează numele || prenume AS FIO FROM tabel

Sau, pentru a separa cu un spațiu, intră

SELECTează numele || "" || prenume AS FIO FROM tabel

acestea. două bare verticale combină două coloane într-una singură, iar pentru a le separa cu un spațiu, am pus un spațiu între ele ( poate fi folosit orice caracter, cum ar fi liniuță sau două puncte) în apostrofe și, de asemenea, combinat cu două bare verticale ( Transact-SQL folosește + în loc de două bare verticale).

Funcția INITCAP

Apoi există și o funcție foarte utilă, INITCAP- care returnează valoarea într-un șir în care fiecare cuvânt începe cu o literă mare și continuă cu minuscule. Acest lucru este necesar dacă nu respectați regulile de umplere într-o coloană sau alta și pentru a afișa totul într-o formă frumoasă, puteți utiliza această funcție, de exemplu, în tabelul dvs., înregistrările din coloana nume sunt de urmatoarea forma: IVAN ivanov sau petr Petrov, folositi aceasta functie.

SELECT INITCAP (nume) CA FIO FROM tabel

Și o vei obține așa.

Funcția SUS

O funcție similară, returnează numai toate caracterele cu majuscule, aceasta este SUPERIOR.

SELECTARE SUS (nume) CA FIO FROM tabel

  • nume - numele coloanei;
  • 20 - numărul de caractere ( lungimea câmpului);
  • „-” este un caracter care trebuie completat la numărul necesar de caractere.

Funcția RPAD

Să luăm în considerare imediat funcția inversă. RPAD- actiunea si sintaxa sunt aceleasi ca pentru LPAD, doar caracterele din dreapta sunt captusite ( în LPAD din stânga).

SELECTAȚI RPAD (nume, 20, "-") CA nume FROM tabel

Ivan —————-
Serghei-----

Funcția LTRIM

Următoarea este, de asemenea, o funcție utilă în unele cazuri, LTRIM- această funcție elimină caracterele din stânga pe care le specificați. De exemplu, aveți o coloană „oraș” în baza de date, în care orașul este indicat ca „Moscova”, și există și orașe care sunt indicate pur și simplu ca „Moscova”. Dar trebuie să afișați raportul numai sub forma „Moscova” fără „g”. Doar specificați un fel de model „g”. iar dacă caracterele din stânga încep cu „g”, atunci aceste caractere pur și simplu nu vor fi afișate.

SELECTAȚI LTRIM (oraș, „oraș”) CA gorod FROM tabel

Această funcție scanează caracterele din stânga, dacă nu există caractere în modelul de la începutul liniei, atunci returnează valoarea inițială a celulei, iar dacă există, le șterge.

Funcția RTRIM

Să aruncăm o privire și la funcția inversă imediat. RTRIM- la fel ca LTRIM, doar caracterele sunt căutate în dreapta.

Notă! În Transact-SQL, funcțiile RTRIM și LTRIM elimină spații din dreapta și, respectiv, din stânga.

Funcția ÎNLOCUIRE

Acum să ne uităm la o funcție atât de interesantă ca A INLOCUI- returnează un șir în care toate potrivirile de caractere sunt înlocuite cu caracterele pe care le specificați. Pentru ce poate fi folosit, de exemplu, aveți coloane în baza de date, în care există câteva simboluri de separare, de exemplu „/”. De exemplu, Ivan / Ivanov și doriți să afișați Ivan-Ivanov, apoi scrieți

SELECTARE REPLACE (nume, "/", "-") FROM tabel

și veți avea un înlocuitor de simboluri.

Această funcție înlocuiește doar o potrivire completă de caractere, dacă, de exemplu, specificați „-”, adică va căuta doar trei liniuțe și nu va înlocui fiecare liniuță individuală, spre deosebire de următoarea funcție.

Funcția TRANSLATE

TRADUCEȚI- o funcție șir care înlocuiește toate caracterele din șir cu caracterele pe care le specificați. Pe baza numelui funcției, ați putea ghici că acesta este un flux de linie complet. Diferența dintre această funcție și REPLACE este că înlocuiește fiecare caracter pe care îl specificați, de exemplu. Ai trei caractere, sa zicem abc si cu ajutorul lui TRANSLATE il poti inlocui cu abc deci ai a = a, b = b, c = c si conform acestui principiu toate potrivirile de caractere vor fi inlocuite. Și dacă ați înlocuit cu REPLACE, atunci ați căutat doar o potrivire completă a simbolurilor abc situate într-un rând.

Funcția SUBSTR

SUBSTR- această funcție returnează doar intervalul de caractere pe care îl specificați. Cu alte cuvinte, să spunem un șir de 10 caractere și nu aveți nevoie de toate cele zece, dar să presupunem că aveți nevoie doar de 3-8 ( de la a treia la a opta). Cu această funcție, puteți face acest lucru cu ușurință. De exemplu, aveți un identificator în baza de date de lungime fixă ​​(cum ar fi AA-BB-55-66-CC) și fiecare combinație de caractere înseamnă ceva. Și la un moment bun vi s-a spus să afișați doar 2 și 3 combinații de caractere, pentru aceasta scrieți o interogare de următoarea formă.

SELECTARE SUBSTR (ident, „4”, „8”) DIN tabel

acestea. tipărim toate caracterele, începând cu 4 și terminând cu 8, iar după această interogare veți obține asta:

Funcția LENGTH - lungimea șirului

Următoarea funcție poate fi, de asemenea, utilă, este LUNGIME- care doar numără numărul de caractere dintr-o linie. De exemplu, trebuie să aflați câte caractere sunt în fiecare celulă dintr-o coloană, să spunem „nume”, un tabel ca acesta.

SELECTARE LUNGIME (nume) FROM tabel

după această cerere vei primi aceasta.

4
6
7

Aici suntem alături de dumneavoastră și am examinat funcțiile de bază ale șirurilor SQL. Vom continua explorarea SQL în articolele viitoare.

Funcții șiruri SQL

Acest grup de funcții vă permite să manipulați text. Există multe funcții șir, le vom lua în considerare pe cele mai comune.
  • CONCAT (str1, str2 ...) Returnează un șir creat prin concatenarea argumentelor (argumentele sunt specificate în paranteze - str1, str2 ...). De exemplu, tabelul nostru de furnizori are o coloană de oraș și o coloană de adresă. Să presupunem că vrem ca adresa și orașul să apară în aceeași coloană în tabelul rezultat, de exemplu. dorim să combinăm datele din două coloane într-una singură. Pentru a face acest lucru, vom folosi funcția șir CONCAT (), iar ca argumente, vom specifica numele coloanelor combinate - oraș și adresă:

    SELECTARE CONCAT (oraș, adresă) FROM vânzători;


    Rețineți că fuziunea a avut loc fără separare, ceea ce nu este foarte ușor de citit. Să ne modificăm interogarea astfel încât să existe un spațiu între coloanele îmbinate:

    SELECTARE CONCAT (oraș, "", adresa) FROM vânzători;


    După cum puteți vedea, spațiul este, de asemenea, considerat un argument și este separat prin virgule. Dacă ar fi mai multe coloane de alăturat, atunci ar fi irațional să indicați spații de fiecare dată. În acest caz, s-ar putea folosi funcția șir CONCAT_WS (delimitator, str1, str2 ...), care plasează un separator între șirurile care urmează să fie concatenate (separatorul este specificat ca prim argument). Solicitarea noastră ar arăta astfel:

    SELECTAȚI CONCAT_WS ("", oraș, adresă) FROM vânzători;

    Rezultatul nu s-a schimbat extern, dar dacă ar fi să concatenăm 3 sau 4 coloane, atunci codul ar fi redus semnificativ.


  • INSERT (str, pos, len, new_str) Returnează șirul str în care subșirul care începe la poziția pos și lungimea caracterelor len a fost înlocuit cu subșirul new_str. Să presupunem că decidem să nu afișăm primele 3 caractere în coloana adresei (abrevieri st., Etc., etc.), apoi le vom înlocui cu spații:

    SELECTARE INSERT (adresă, 1, 3, "") FROM furnizori;


    Adică trei caractere, începând cu primul, sunt înlocuite cu trei spații.


  • LPAD (str, len, dop_str) Returnează șirul str, completat la stânga de dop_str la lungimea len. Să presupunem că vrem ca orașele furnizori să fie în dreapta atunci când afișăm orașele furnizor și umplem spațiul gol cu ​​puncte:

    SELECTAȚI LPAD (oraș, 15, ".") FROM vânzători;



  • RPAD (str, len, dop_str) Returnează șirul str, completat la dreapta de dop_str la lungimea len. Să presupunem că vrem ca orașele furnizor să fie în stânga și să umplem spațiul gol cu ​​puncte atunci când afișăm orașele furnizor:

    SELECTARE RPAD (oraș, 15, ".") FROM vânzători;


    Rețineți că len ​​limitează numărul de caractere care trebuie afișate, de exemplu. dacă numele orașului are mai mult de 15 caractere, acesta va fi trunchiat.


  • LTRIM (str) Returnează șirul str cu toate spațiile de început eliminate. Această funcție șir este convenabilă pentru afișarea corectă a informațiilor în cazurile în care sunt permise spații aleatorii la introducerea datelor:

    SELECTAȚI LTRIM (orașul) FROM furnizori;


  • RTRIM (str) Returnează șirul str cu toate spațiile din urmă eliminate:

    SELECTARE RTRIM (oraș) FROM vânzători;

    În cazul nostru, nu au existat spații suplimentare, așa că nu vom vedea rezultatul în exterior.


  • TRIM (str) Returnează șirul str cu toate spațiile de început și de final eliminate:

    SELECTARE TRIM (oraș) FROM vânzători;


  • LOWER (str) Returnează șirul str cu toate caracterele convertite în minuscule. Nu funcționează corect cu literele rusești, așa că este mai bine să nu-l folosești. De exemplu, să aplicăm această funcție în coloana orașului:

    SELECTARE oraș, LOWER (oraș) FROM vânzători;


    Vedeți ce fel de farfurie s-a dovedit. Dar cu alfabetul latin, totul este în ordine:

    SELECTARE LOWER ("ORAȘUL");



  • UPPER (str) Returnează șirul str cu toate caracterele majuscule. De asemenea, este mai bine să nu-l folosiți cu litere rusești. Dar cu alfabetul latin, totul este în ordine:

    SELECTARE SUS (email) FROM clienți;



  • LENGTH (str) Returnează lungimea șirului str. De exemplu, să aflăm câte caractere sunt în adresele furnizorilor noștri:

    SELECTAȚI adresa, LUNGIME (adresă) FROM vânzători;



  • LEFT (str, len) Returnează len caracterele din stânga ale șirului str. De exemplu, să presupunem că numai primele trei caractere sunt afișate în orașele furnizor:

    SELECTAȚI numele, LEFT (oraș, 3) FROM vânzători;



  • RIGHT (str, len) Returnează len caracterele din dreapta ale șirului str. De exemplu, să presupunem că numai ultimele trei caractere sunt afișate în orașele furnizor: SELECT LOAD_FILE ("C: / proverka");
    Vă rugăm să rețineți că trebuie să specificați calea absolută către fișier.

După cum am menționat deja, există multe mai multe funcții șir, dar chiar și unele dintre cele luate în considerare aici sunt rar utilizate. Deci, acolo vom încheia recenzia noastră și vom trece la funcțiile de dată și oră mai frecvent utilizate.

Alții. Are următoarea sintaxă:

CONV (număr, N, M)

Argument număr este în baza N. Funcția îl convertește în baza M și returnează valoarea ca șir.

Exemplul 1

Următoarea interogare transformă numărul zecimal 2 în binar:

SELECT CONV (2,10,2);

Poziția: 10

Pentru a converti numărul 2E din hexazecimal în zecimal, este necesară următoarea interogare:

SELECT CONV ("2E", 16.10);

Poziția: 46

Funcţie CHAR () traduce codul ASCII în șiruri de caractere. Are următoarea sintaxă:

CHAR (n1, n2, n3 ..)

Exemplul 2

SELECTARE CHAR (83.81.76);

Rezultat: SQL

Următoarele funcții returnează lungimea unui șir:

  • LUNGIME (șir);
  • OCTET_LENGTH (șir);
  • CHAR_LENGTH (șir);
  • CHARACTER_LENGTH (șir).

Exemplul 3

SELECTARE LUNGIME ("MySQL");

Rezultat: 5

Uneori o funcție utilă BIT_LENGTH (șir) care returnează lungimea șirului în biți.

Exemplul 4

SELECT BIT_LENGTH ("MySQL");

Poziția: 40

Funcții pentru lucrul cu subșiruri

Un subșir este de obicei denumit o porțiune a unui șir. Este adesea necesar să aflați poziția primei apariții a unui subșir într-un șir. Trei funcții rezolvă această problemă în MySQL:

  • LOCATE (subșir, șir [, poziție]);
  • POZIȚIE (subșir, șir);
  • INSTR (șir, subșir).

Dacă subșirul nu este conținut în șir, atunci toate cele trei funcții returnează valoarea 0. Funcția INSTR () diferă de celelalte două în ordinea argumentelor sale. Funcția LOCATE () poate avea un al treilea argument poziţie, care vă permite să căutați un subșir într-un șir nu de la început, ci dintr-o poziție specificată.

Exemplul 5

SELECTARE LOCALIZARE („Topaz”, „Societate pe acțiuni deschise Topaz”);

Poziția: 31

SELECTAȚI POZIȚIA („Topaz”, „Societate pe acțiuni deschise Topaz”);

Poziția: 31

SELECT INSTR („Topaz Open Joint Stock Company”, „Topaz”);

Poziția: 31

SELECTARE LOCALIZARE („Topaz”, „Uzina Topaz și Topaz LLC”, 9);

Poziția: 20

SELECTARE LOCALIZARE („Almaz”, „Open Joint Stock Company Topaz”);

Rezultat: 0

Funcții STÂNGA (șir, N)și DREAPTA (șir, N) returnează cele N caractere din stânga și, respectiv, din dreapta N din șir.

Exemplul 6

SELECTARE STÂNGA ("MySQL DBMS", 4);

Rezultat: DBMS

SELECTARE DREAPTA ("MySQL DBMS", 5);

Rezultat: MySQL

Uneori doriți să obțineți un subșir care începe la o anumită poziție. Pentru aceasta se folosesc următoarele funcții:

  • SUBȘIR (șir, poziție, N);
  • MID (șir, poziție, N).

Ambele funcții returnează N caractere ale șirului specificat, începând de la poziția specificată.

Exemplul 7

SELECT SUBSTRING („MySQL DBMS este unul dintre cele mai populare DBMS”, 6,5);

Rezultat: MySQL

Când lucrați cu adrese de e-mail și adrese de site-uri web, funcția este foarte utilă SUBSTR_INDEX ()... Funcția are trei argumente:

SUBSTR_INDEX (șir, delimitator, N).

Argumentul N poate fi pozitiv sau negativ. Dacă este negativă, atunci funcția găsește a N-a apariție a delimitatorului, numărând din dreapta. Apoi returnează subșirul la dreapta delimitatorului găsit. Dacă N este pozitiv, atunci funcția găsește a N-a apariție a delimitatorului din stânga și returnează subșirul din stânga delimitatorului găsit.

Exemplul 8

SELECTARE SUBSTRING_INDEX ("www.mysql.ru", ".", 2);

Rezultat: www.mysql

SELECTARE SUBSTRING_INDEX ("www.mysql.ru", ".", - 2);

Rezultat: mysql.ru

Funcţie REPLACE (șir, subșir1, subșir2) vă permite să înlocuiți toate aparițiile substring1 dintr-un șir cu substring2.

Funcțiile și operatorii de bază de șir oferă o varietate de opțiuni și returnează, ca rezultat, o valoare de șir. Unele funcții de șir sunt cu două elemente, ceea ce înseamnă că pot opera pe două șiruri în același timp. Standardul SQL 2003 acceptă funcții șir.

Operator de concatenare

SQL 2003 definește operatorul de concatenare (||) care concatenează două șiruri separate într-o singură valoare șir.

Platforma DB2

Platforma DB2 acceptă operatorul de concatenare SQL 2003 și sinonimul acestuia, funcția CONCAT.

Platforma MySQL

Platforma MySQL acceptă funcția CONCATQ, un sinonim pentru operatorul de concatenare SQL 2003.

Oracle și PostgreSQL

Platformele PostgreSQL și Oracle acceptă operatorul de concatenare a barelor verticale duble SQL 2003.

Platforma SQL Server

Platforma SQL Server folosește semnul plus (+) ca sinonim pentru operatorul de concatenare SQL 2003. SQL Server oferă parametrul de sistem CONCAT_NULL_YIELDS_NULL care controlează modul în care sistemul se comportă atunci când sunt întâlnite valori NULL la concatenarea valorilor șirului.

/ * Sintaxa SQL 2003 * /

stringl || șir2 || sfoară3

șir1șir2șir3

/ * Pentru MySQL * /

CONCAT ("stringl", "string2")

Dacă oricare dintre valorile concatenate este goală, atunci este returnat un șir gol. În plus, dacă o valoare numerică este implicată în concatenare, aceasta este implicit convertită într-un șir.

SELECTARE CONCAT („My”, „bologna”, „are”, „a”, „primul”, „nume...”);

Bologna mea are un prenume

SELECT CONCAT ("My", NULL, "are", "first", "nume ...");

CONVERȚI și TRADUCEȚI

Funcția CONVERT schimbă afișarea unui șir de caractere într-un set de caractere și colaţionare. De exemplu, funcția CONVERT poate fi folosită pentru a modifica numărul de biți pe caracter.

Funcția TRANSLATE traduce o valoare de șir dintr-un set de caractere în altul. De exemplu, funcția TRANSLATE poate fi utilizată pentru a converti o valoare din setul de caractere englezești în setul de caractere Kanji (japonez) sau chirilic (rusă). Traducerea în sine trebuie să existe deja - fie cea implicită, fie creată cu comanda CREATE TRANSLATION.

Sintaxa SQL 2003

CONVERT (valoare_caracter USING caracter_nume_conversie)

TRANSLATE (valoare_char USING nume_traducere)

Funcția CONVERT convertește o valoare de caracter în setul de caractere cu numele specificat în parametrul character_conversion_name. Funcția TRANSLATE convertește o valoare de caracter în setul de caractere specificat în traducere_name.

Dintre platformele luate în considerare, numai Oracle acceptă funcțiile CONVERT și TRANSLATE așa cum sunt definite în standardul SQL 2003. Funcția TRANSLATE a Oracle este foarte asemănătoare, dar nu identică, cu SQL 2003. În această implementare, funcția ia doar două argumente și se traduce numai între setul de caractere al bazei de date și setul de caractere suport pentru limba națională.

Implementarea MySQL a funcției CONV convertește doar numerele de la o bază la alta. Dar în SQL Server, implementarea funcției CONVERT este foarte bogată în caracteristici și modifică tipul de date pentru expresie, dar în toate celelalte aspecte diferă de funcția CONVERT a standardului SQL 2003. Platforma PostgreSQL nu acceptă CONVERT funcția, iar implementarea funcției TRANSLATE convertește toate aparițiile unui șir de caractere în orice alt șir de caractere.

Db2

Platforma DB2 nu acceptă funcția CONVERT, iar suportul pentru funcția TRANSLATE nu este compatibil ANSI. Funcția TRANSLATE este folosită pentru a converti subșiruri și este sinonimă istoric cu funcția UPPER deoarece funcția UPPER a fost adăugată doar recent la DB2. Dacă funcția TRANSLATE este utilizată în DB2 cu un singur argument expresie caracter, rezultatul este același șir convertit în majuscule. Dacă funcția este folosită cu mai multe argumente, de exemplu TRANSLATE (ucmo4HUK, înlocuire, potrivire), atunci funcția convertește toate caracterele din sursă care sunt și în parametrul de potrivire. Fiecare caracter din sursă care se află în aceeași poziție cu parametrul de potrivire va fi înlocuit cu caracterul din parametrul de înlocuire. Mai jos este un exemplu.

TRANSLATE ("Salut, lume!") "HELLO; WORLD!"

TRANSLATE ("Bună ziua, Lume1", "wZ", "1W") "Hewwo, Zorwd1

MySQL

Platforma MySQL nu acceptă funcțiile TRANSLATE și CONVERT.

Oracol

Platforma Oracle acceptă următoarea sintaxă pentru funcțiile CONVERT și TRANSLATE.

În implementarea Oracle, funcția CONVERT returnează textul unei valori de caracter, convertit în set de caractere țintă. Valoare_caracter este șirul care trebuie convertit, set_caractere_țintă este numele setului de caractere în care se convertește șirul și setul de caractere_sursă este setul de caractere în care a fost stocată inițial valoarea șirului.

Funcția TRANSLATE a Oracle urmează sintaxa ANSI, dar puteți alege doar unul dintre cele două seturi de caractere: setul de caractere al bazei de date (CHARJCS) și setul de caractere acceptat în limba națională (NCHARJZS).

Oracle suportă și o altă funcție, numită și TRANSLATE (fără a folosi cuvântul cheie USING). Această funcție TRANSLATE nu are nimic de-a face cu conversia setului de caractere.

Numele setului de caractere țintă și sursă pot fi transmise fie ca constante șir, fie ca referință la o coloană de tabel. Rețineți că atunci când convertiți un șir într-un set de caractere care nu afișează toate caracterele de convertit, puteți înlocui metacaracterele.

Oracle acceptă mai multe seturi de caractere comune, care includ seturile US7ASCII, WE8DECDEC. WE8HP, F7DEC, WE8EBCDIC500, WE8PC850u WE8ISO8859PI. De exemplu:

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

PostgreSQL

Platforma PostgreSQL acceptă instrucțiunea ANSI CONVERT, iar conversiile aici pot fi definite folosind comanda CREATE CONVERSION. Implementarea de către PostgreSQL a funcției TRANSLATE oferă un set extins de funcții care vă permit să convertiți orice text în alt text dintr-un șir specificat.

TRANSLATE (șir de caractere, din_text, către_text)

Aici sunt cateva exemple:

SELECT TRANSLATE ("12345abcde", "5a", "XX"); „1234XXbcde” SELECT TRANSLATE (titlu, „Computer”, „PC”) FROM titluri WHERE tip = „Personal_computer” SELECT CONVERT (“PostgreSQL” USING iso_8859_1_to_utf_8) „PostgreSQL”

SQL Server

SQL Server nu acceptă funcția TRANSLATE. Implementarea funcției CONVERT în SQL Server nu este conformă cu standardul SQL 2003. Această funcție în SQL Server este echivalentă cu funcția CAST.

CONVERT (tip de date [(lungime) | (precizie, scară)], expresie, stil])

Clauza de stil este utilizată pentru a defini formatul conversiei datei. Pentru mai multe informații, consultați documentația SQL Server. Mai jos este un exemplu.

SELECTează titlul, CONVERTĂ (car (7), ytd_sales) FROM titluri ORDERĂ după titlu GO

Astăzi îmi propun să luăm în considerare exemple simple de utilizare Funcții șir Transact-SQL, și nu doar o descriere și exemple ale unor funcții, ci combinația lor, de ex. cum le puteți cuibărește unul în celălalt, deoarece pentru implementarea multor sarcini, funcțiile standard nu sunt suficiente și trebuie să le folosiți împreună. Așa că aș dori să vă arăt câteva exemple simple de scriere a unor astfel de interogări.

Am examinat deja funcțiile șiruri SQL, dar din moment ce implementările acestui limbaj în diferite SGBD-uri sunt diferite, de exemplu, unele funcții nu sunt în Transact-SQL, ci în PL / PGSql sunt și tocmai data trecută ne-am uitat la funcțiile șir. care se poate folosi în plpgsql și, prin urmare, astăzi vom vorbi în mod specific despre Transact-SQL.

Cum pot fi combinate SUBSTRING, CHARINDEX și LEN

Și așa, de exemplu, trebuie să căutați o parte dintr-un șir conform unui anumit criteriu și să o decupați, și nu doar să căutați o parte de același tip, ci în mod dinamic, de exemplu. șirul de căutare va fi diferit pentru fiecare linie. Exemplele vor fi scrise în Management Studio SQL Server 2008.

Pentru aceasta vom folosi următoarele funcții:

  • SUBSTRING(str, start, len) - această funcție decupează o parte dintr-un șir dintr-un alt șir. Are trei parametri 1. Acesta este șirul în sine; 2. Poziția de pornire din care să începeți tăierea; 3. Numărul de caractere, câte trebuie tăiate.
  • CHARINDEX(str1, str2) - caută str1 în str2 și returnează ordinalul primului caracter dacă este găsit un astfel de șir. Are un al treilea parametru opțional, cu ajutorul căruia puteți specifica din ce parte să începeți căutarea.
  • LEN(str1) este lungimea șirului, adică Personaje.

După cum puteți vedea, aici am folosit declarația de variabile și puteți înlocui propriile câmpuri în cerere în loc de variabile. Iată codul în sine:

Declara @rezult ca varchar (10) - șirul sursă declare @ str1 ca varchar (100) - șirul de căutare declare @ str2 ca varchar (10) set @ str1 = "Testează șirul șir pentru a căuta un alt șir în el" set @ str2 = "șir" set @ rezult = subșir (@ str1, CHARINDEX (@ str2, @ str1), LEN (@ str2)) selectează @rezult

Ideea aici este aceasta: folosim funcția len pentru a afla câte caractere trebuie tăiate, iar charindex setează poziția din care să începem tăierea și, în consecință, subșirul realizează selecția în sine în șir.

Cum pot fi combinate LEFT, RIGHT și LEN

Să presupunem că trebuie să obțineți primele caractere dintr-un șir sau să verificați aceste primele caractere dintr-un șir pentru prezența a ceva, de exemplu, un fel de număr, iar lungimea acestuia este în mod natural diferită (un exemplu de testare, desigur) .

  • Stânga(str, kol) - funcția decupează din stânga numărul specificat de caractere, are doi parametri, primul este un șir și al doilea, respectiv, numărul de caractere;
  • Dreapta(str, kol) - funcția decupează numărul specificat de caractere din dreapta, parametrii sunt aceiași.

Acum vom folosi interogări simple împotriva tabelului

Mai întâi, să creăm un test_table:

CREATE TABLE (IDENTITATE (1,1) NOT NULL, (18, 0) NULL, (50) NULL, CONSTRAINT CHEIE PRIMARĂ CLUSTERED (ASC) CU (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW =) ON_LOCPOWS_RO =) ) ÎN MERCAT

Să-l umplem cu date de testare și să scriem următoarele interogări:

După cum înțelegeți, prima interogare este doar o selecție a tuturor rândurilor (SQL Basics - instrucțiunea select), iar a doua este o combinație directă a funcțiilor noastre, aici este codul:

Selectați * din test_table select number, left (text, LEN (number)) ca str din test_table

Și dacă aceste numere ar fi în dreapta, atunci am folosi funcția DREAPTA.

Folosind Rtrim, Ltrim, Upper și Lower în combinație

Presupunând că aveți o linie cu spații la început și la sfârșit și, desigur, ați scăpa de ele și, de exemplu, le-ați face, astfel încât prima literă din această linie să devină majusculă.

  • Rtrim(str) - elimină spații din dreapta;
  • Ltrim(str) - elimină spații din stânga;
  • Superior(str) - convertește șirul în majuscule;
  • Inferior(str) - convertește șirul în minuscule.

După cum puteți vedea, pentru reparații am folosit și aici Subșirși Len... Semnificația interogării este simplă, eliminăm spații atât din dreapta cât și din stânga, apoi convertim primul caracter în majuscule prin tăierea lui, apoi concatenăm (operator +) acest caracter cu restul șirului. Iată codul:

Declara @ str1 ca varchar (100) set @ str1 = "șir de testare cu spații de început și de final" select @ str1 selectează superior (subșir (rtrim (ltrim (@ str1)), 1,1)) + inferior (subșir ( rtrim ( ltrim (@ str1)), 2, LEN (rtrim (ltrim (@ str1))) - 1))

Pentru astăzi, cred că este suficient, iar dacă vă place programarea în SQL, atunci pe acest site am atins de mai multe ori acest subiect foarte interesant, de exemplu.



Ți-a plăcut articolul? Împărtășește-l