Строкові функції SQL – приклади використання

Ми продовжуємо вивчення мови запитів SQL, і сьогодні ми з Вами будемо розмовляти про строкових функціях SQL. Ми розглянемо основні і часто використовувані рядкові функції, такі як: LOWER, LTRIM, REPLACE та інші, все розглядати ми будемо, звичайно ж, на прикладах.

У минулій статті «Основи мови запитів SQL – оператор SELECT» ми з Вами дізналися, що таке взагалі SQL, а також розглянули основи оператора SELECT (умови відбору, агрегатні функції), Тут же ми продовжуємо вивчення оператора SELECT, а якщо говорити конкретніше, то будемо розглядати рядкові функції SQL.

Строкові функції використовуються для повернення вже відредагованого значення. Іншими словами, наприклад, у Вас в колонці все значення складаються більш ніж з 20 символів, а Вам потрібно повернути все перші 5 символів, це можна зробити за допомогою так званих строкових функціях.

Тепер перейдемо безпосередньо до самих функцій. Тут я розглядаю тільки часто використовувані в роботі або просто корисні рядкові функції.

функція CONCAT

Почнемо з функції CONCAT – вона використовується для об’єднання значень двох стовпців в один. Припустимо у Вас в таблиці, «Ім’я» і «Прізвище» знаходяться в різних колонках (що логічно), А Вам, для якого-небудь звіту, потрібно щоб вони виводилися в одній колонці. Ви можете легко використовувати цю функцію.

SELECT CONCAT (name, surname) AS FIO FROM table

За допомогою даного запиту Ви об’єднайте дві колонки в одну, тобто у Вас вийде не ось так

Іван

Іванов

Петро

Петров

А ось так

Іван Іванов

Петро Петров

Аналогічно цьому запиту можна використовувати наступну конструкцію (може бути застосовано в PostgreSQL).

SELECT name || surname AS FIO FROM table

Або щоб відокремити пропуском введіть

SELECT name || ” || surname AS FIO FROM table

Тобто пояснюю, дві вертикальні риси об’єднують два стовпці в один, а щоб відокремити їх пропуском я поставив між ними пробіл (можна використовувати будь-який символ, наприклад тире або двокрапка) В апострофа і об’єднав також двома вертикальними рисами (в Transact-SQL замість двох вертикальних рисок використовується знак +).

функція INITCAP

Далі йде також дуже корисна функція, INITCAP – яка повертає значення в рядку, в якій кожне слово починається з великої літери, а триває маленькими. Це потрібно для того, якщо у Вас в тій чи іншій колонці не дотримуються правила заповнення і для того щоб вивести всю цю справу в красивому вигляді можна використовувати цю функцію, наприклад, у Вас в таблиці записи в колонці name такого вигляду: ІВАН іванов або петро петрів, Ви застосовуєте цю функцію.

SELECT INITCAP (name) AS FIO FROM table

І у Вас вийде ось так.

Іван Іванов

Петро Петров

функція LOWER

Наступна функція також може стати в нагоді. LOWER – повертає в значення все слова з маленької літери. Використовуємо приклад вище, але тільки будемо користуватися наступний функцією.

SELECT LOWER (name) AS FIO FROM table

А тепер вийде ось так.

Іван Іванов

петро петрів

функція UPPER

Схожа функція, тільки повертає всі символи з великої літери, це UPPER.

SELECT UPPER (name) AS FIO FROM table

приклад

ІВАН ІВАНОВ

ПЕТРО ПЕТРОВ

функція LPAD

Далі йде функція LPAD – вона стане в нагоді Вам, якщо Вам необхідно доповнити зліва якимись символами, до певної кількості знаків. Припустимо, Вам необхідно, щоб довжина поля «Ім’я» була 20 знаків, і якщо довжина імені менше (наприклад, «Іван» явно менше 20 знаків), То буде відбуватися доповнення зліва спеціальним символом (для прикладу використовуємо тире).

SELECT LPAD (name, 20, ‘-‘) AS name FROM table

—————-Іван

————–Сергій

де,

  • name – назва колонки;
  • 20 – кількість знаків (довжина поля);
  • ‘-‘ – символ, яким потрібно доповнити до необхідної кількості знаків.

функція RPAD

Відразу розглянемо зворотну функцію. RPAD – дія і синтаксис той же що і у LPAD, тільки доповнюються символи праворуч (в LPAD зліва).

SELECT RPAD (name, 20, ‘-‘) AS name FROM table

Іван —————-

Сергій————–

функція LTRIM

Далі йде теж в деяких випадках корисна функція, LTRIM – ця функція видаляє крайні ліві символи, які Ви вкажете. Наприклад, у Вас в базі є колонка «місто», в якій місто вказано у вигляді «м.Київ», а також є міста які вказані у вигляді просто «Київ». Але Вам потрібно вивести звіт тільки у вигляді «Київ» без «р», але як це зробити, якщо є і такі і такі? Ви просто вказуєте свого роду шаблон «р» і якщо крайні ліві символи починаються з «р», то ці символи просто не будуть виводитися.

SELECT LTRIM (city, ‘м’) AS gorod FROM table

до функції

після функції

м. Київ

Київ

Київ

Київ

г.Калуга

Калуга

Ця функція переглядає символи зліва, якщо символів за шаблоном немає на початку рядка, то вона повертає початкове значення осередку, а якщо є, то видаляє їх.

функція RTRIM

Також давайте відразу розглянемо зворотну функцію. RTRIM – те ж саме що і LTRIM тільки символи шукаються справа.

Примітка! У Transact-SQL функції RTRIM і LTRIM видаляють прогалини справа і зліва відповідно.

функція REPLACE

Тепер розглянемо таку цікаву функцію як REPLACE – вона повертає рядок, в якій всі збіги символів, замінюються на Ваші символи, які Ви вкажете. Для чого її можна використовувати, наприклад, у Вас в базі є колонки, в яких зустрічаються якісь розділові символи, припустимо «/». Наприклад, Іван / Іванов, а Вам хотілося б вивести Іван-Іванов, то напишіть

SELECT REPLACE (name, ‘/’, ‘-‘) FROM table

і у Вас станеться заміна символів.

Ця функція замінює тільки повний збіг символів, якщо наприклад Ви вкажіть «—» тобто три тире вона і буде шукати тільки три тире, а кожне окреме тире замінювати не буде, на відміну від наступної функції.

функція TRANSLATE

TRANSLATE – строкова функція, яка замінює всі символи в рядку, на ті символи, які Ви вкажете. Виходячи з назви функції, можна здогадатися, що це повний переклад рядка. Відмінність даної функції від REPLACE в тому, що вона замінює кожен символ, який Ви вкажете, тобто у Вас є три символи, припустимо абв і за допомогою TRANSLATE Ви його можете замінити на abc таким чином у Вас а = a, б = b, в = c і за таким принципом будуть замінюватися всі збіги символів. А якщо Ви замінювали за допомогою REPLACE, то у Вас искалось тільки повний збіг символів абв розташованих підряд.

функція SUBSTR

SUBSTR – дана функція, повертає тільки той діапазон символів, який Ви вкажете. Іншими словами, припустимо, рядок з 10 символів, а Вам все десять не потрібні, а допустимо, потрібні тільки 3-8 (з третього по восьмий). За допомогою даної функції Ви легко можете це зробити. Наприклад, у Вас в базі є який-небудь ідентифікатор, фіксованої довжини (типу: AA-BB-55-66-CC) і кожна комбінація символів щось означає. І в один прекрасний момент Вам сказали вивести тільки 2 і 3 комбінацію символів, для цього ви пишіть запит наступного виду.

SELECT SUBSTR (ident, ‘4’, ‘8’) FROM table

тобто ми виводимо всі символи, починаючи з 4 і закінчуючи 8, і після цього запиту у Вас виведеться ось це:

BB-55

Функція LENGTH – довжина рядка

Наступна функція також може стати в нагоді, це LENGTH – яка просто на все рахує кількість символів в рядку. Наприклад, Вам потрібно дізнатися, скільки символів в кожного осередку стовпця допустимо «name», таблиця наступного вигляду.

Сергій

Віталій

SELECT LENGTH (name) FROM table

після цього запиту Ви отримаєте ось це.

Ось ми з Вами і розглянули основні рядкові функції SQL. У наступних статтях ми продовжимо вивчення SQL.

Ссылка на основную публикацию