MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Funcții încorporate

Funcții pentru manipularea șirurilor de caractere

Pentru lucrul cu șiruri în MySQL, sunt definite anumite funcții încorporate:

  • CONCAT: concatenează șirurile. Primește ca parametru cel puțin două șiruri pe care trebuie să le conecteze:
SELECT CONCAT('Tom', ' ', 'Smith')  -- Tom Smith

În același timp, în funcție se pot transmite nu numai șiruri directe, ci și numere, date - acestea vor fi convertite în șiruri și, de asemenea, concatenate.

  • CONCAT_WS: de asemenea, concatenează șirurile, dar primul parametru este un separator care va conecta șirurile:
SELECT CONCAT_WS(' ', 'Tom', 'Smith', 'Age:', 34)  -- Tom Smith Age: 34
  • LENGTH: returnează numărul de caractere dintr-un șir. Ca parametru, funcția primește șirul pentru care trebuie să găsească lungimea:
SELECT LENGTH('Tom Smith')  -- 9
  • LTRIM: elimină spațiile albe inițiale dintr-un șir. Ca parametru, primește un șir:
SELECT LTRIM('  Apple')
  • RTRIM: elimină spațiile albe finale dintr-un șir. Ca parametru, primește un șir:
SELECT RTRIM(' Apple    ')
  • TRIM: elimină spațiile albe inițiale și finale dintr-un șir. Ca parametru, primește un șir:
SELECT TRIM('  Tom Smith   ')

Cu ajutorul unui operator suplimentar, puteți specifica unde exact să eliminați spațiile albe: BOTH (în ambele capete), TRAILING (doar la sfârșit), LEADING (doar la început):

SELECT TRIM(BOTH FROM '  Tom Smith   ')
  • LOCATE(find, search [, start]): returnează poziția primei apariții a subșirului find în șirul search. Parametrul suplimentar start permite să se seteze poziția în șirul search de la care să înceapă căutarea subșirului find. Dacă subșirul find nu este găsit, se returnează 0:
SELECT LOCATE('om', 'Tom Smith');       -- 2
SELECT LOCATE('m', 'Tom Smith');        -- 3
SELECT LOCATE('m', 'Tom Smith', 4);     -- 6
SELECT LOCATE('mig', 'Tom Smith');      -- 0
  • LEFT: taie de la începutul șirului un număr specificat de caractere. Primul parametru al funcției este șirul, iar al doilea parametru este numărul de caractere care trebuie tăiate de la începutul șirului:
SELECT LEFT('Apple', 3); -- App

RIGHT: taie de la sfârșitul șirului un număr specificat de caractere. Primul parametru al funcției este șirul, iar al doilea parametru este numărul de caractere care trebuie tăiate de la sfârșitul șirului:

SELECT RIGHT('Apple', 3);    -- ple
  • SUBSTRING(str, start [, length]): taie din șirul str un subșir începând de la poziția start. Al treilea parametru opțional transmite numărul de caractere tăiate:
SELECT SUBSTRING('Galaxy S8 Plus', 8);          -- S8 Plus
SELECT SUBSTRING('Galaxy S8 Plus', 8, 2);        -- S8
  • SUBSTRING_INDEX(str, delimiter, count): taie din șirul str un subșir. Parametrul delimiter determină separatorul în interiorul șirului. Parametrul count determină până la care apariție a separatorului trebuie tăiat subșirul. Dacă count este pozitiv, subșirul este tăiat de la început, iar dacă count este negativ, este tăiat de la sfârșitul șirului str:
SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', 1);           -- Galaxy
SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', 2);        -- Galaxy S8
SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', -2);           -- S8 Plus
  • REPLACE(search, find, replace): înlocuiește în șirul search subșirul find cu subșirul replace. Primul parametru al funcției este șirul, al doilea parametru este subșirul care trebuie înlocuit, iar al treilea parametru este subșirul cu care trebuie înlocuit:
SELECT REPLACE('Galaxy S8 Plus', 'S8 Plus', 'Note 8');   -- Galaxy Note 8
  • INSERT(str, start, length, insert): inserează în șirul str, înlocuind length caractere de la poziția start, subșirul insert. Primul parametru al funcției este șirul, al doilea parametru este poziția de la care să înceapă înlocuirea, al treilea parametru este câte caractere de la poziția start trebuie înlocuite cu subșirul insert, iar al patrulea parametru este subșirul de inserat:
SELECT INSERT('Galaxy S9', 8, 3, 'Note 9');   -- Galaxy Note 9
  • REVERSE: inversează șirul:
SELECT REVERSE('123456789'); -- 987654321
  • LOWER: convertește șirul la litere mici:
SELECT LOWER('Apple');   -- apple
  • UPPER: convertește șirul la litere mari:
SELECT UPPER('Apple');   -- APPLE
  • SPACE: returnează un șir care conține un număr specificat de spații:
SELECT SPACE(5); -- "     "
  • REPEAT(str, count): returnează un șir care conține un număr specificat de repetări ale subșirului str. Numărul de repetări este specificat prin parametrul count:
SELECT REPEAT('ab', 5);   -- ababababab
  • LPAD(str, length, pad): adaugă la stânga șirului str un număr specificat de caractere specificate în parametrul pad. Numărul de caractere adăugate este calculat conform formulei length - LENGTH(str). Dacă parametrul length este mai mic decât lungimea șirului str, atunci acest șir este tăiat la length caractere:
SELECT LPAD('Tom Smith', 13, '*');   -- ****Tom Smith
  • RPAD(str, length, pad): adaugă la dreapta șirului str un număr specificat de caractere specificate în parametrul pad. Numărul de caractere adăugate este calculat conform formulei length - LENGTH(str). Dacă parametrul length este mai mic decât lungimea șirului str, atunci acest șir este tăiat la length caractere:
SELECT RPAD('Tom Smith', 13, '*');   -- Tom Smith****

De exemplu, să luăm o tabelă:

CREATE TABLE Products
(
   Id INT AUTO_INCREMENT PRIMARY KEY,
   ProductName VARCHAR(30) NOT NULL,
   Manufacturer VARCHAR(20) NOT NULL,
   ProductCount INT DEFAULT 0,
   Price DECIMAL NOT NULL
);

Și la extragerea datelor, să aplicăm funcțiile pentru șiruri de caractere:

SELECT UPPER(LEFT(Manufacturer,2)) AS Abbreviation,
      CONCAT(ProductName, ' - ',  Manufacturer) AS FullProdName
FROM Products
ORDER BY Abbreviation
← Lecția anterioară Lecția următoare →