Основни водич за почетнике

Желите да повежете две или више колона стрингова у СКЛ-у? Научите како да користите функцију СКЛ ЦОНЦАТ за спајање стрингова.

Када постављате упит за табелу базе података, можда ћете понекад морати да повежете више колона текста/стрингова уместо да преузимате податке из једне колоне. Ово је корисно када вам је потребан лакши за тумачење и читљив излаз.

На пример, можете да изаберете поље пуног_име спајањем поља фирст_наме и презимена. Слично, можете добити пуну_адресу спајањем улице, града, државе и других неопходних поља.

У СКЛ-у можете користити функцију ЦОНЦАТ за спајање стрингова. У овом водичу ћемо прећи преко:

  • Синтакса функције СКЛ ЦОНЦАТ
  • Примери употребе
  • Руковање НУЛЛ вредностима у једној или више колона током конкатенације

Хајде да почнемо!

Синтакса функције СКЛ ЦОНЦАТ

Синтакса за коришћење функције СКЛ ЦОНЦАТ је следећа:

CONCAT(string_1, string_2, ..., string_n);

Овде стринг_1, стринг_2, …, стринг н означавају низове који се спајају. То могу бити стринг литерали или колоне или комбинација оба.

Повезивање стринг литерала са ЦОНЦАТ

Пошто функција ЦОНЦАТ такође може да се користи за спајање стринг литерала, хајде да покушамо да кодирамо једноставан пример.

Овде спајамо низове ‘Хелло,’ и ‘ворлд!’ као поздравни низ:

SELECT CONCAT('Hello, ', 'world!') AS greeting;

Покретање горњег упита ће вам дати следећи излаз:

+---------------+
| greeting      |
+---------------+
| Hello, world! |
+---------------+
1 row in set (0.00 sec)

У пракси, међутим, можда ћете желети да повежете потребне колоне у табелу базе података, а не литерале стрингова. Хајде да кодирамо неке примере користећи функцију ЦОНЦАТ у СКЛ-у.

Како спојити колоне у СКЛ-у

Затим, пређимо на испитивање табеле базе података.

📑 Сви узорци упита у овом водичу су покренути на а МиСКЛ табела базе података. Али такође можете пратити у другом РДБМС-у по вашем избору.

  Како да зумирате ТикТок без руку

Креирање табеле базе података са записима

Хајде да направимо базу података коју можемо да користимо:

CREATE DATABASE db1;
use db1;

Хајде да креирамо табелу запослених у бази података дб1. Да бисте то урадили, покрените наредбу ЦРЕАТЕ ТАБЛЕ са следећим колонама и одговарајућим типовима података:

CREATE TABLE employees (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    street VARCHAR(100),
    city VARCHAR(50),
    state VARCHAR(2),
    username VARCHAR(20)
);

Затим, убацимо неколико записа у табелу запослених:

INSERT INTO employees (first_name, last_name, street, city, state, username) VALUES
    ('John', 'Smith', '123 Main St', 'New York', 'NY', 'john123'),
    ('Alice', 'Johnson', '456 Elm St', 'Boston', 'MA', 'alice456'),
    ('Bob', 'Williams', '789 Oak St', 'Chicago', 'IL', 'bob789'),
    ('Mary', 'Davis', '321 Pine St', 'Houston', 'TX', 'mary456'),
    ('James', 'Brown', '555 Cedar St', 'Seattle', 'WA', 'james789'),
    ('Emily', 'Jones', '777 Maple St', 'Atlanta', 'GA', 'emily123'),
    ('Michael', 'Miller', '999 Birch St', 'Miami', 'FL', 'michael456'),
    ('Jessica', 'Wilson', '111 Walnut St', 'Dallas', 'TX', 'jessica789'),
    ('William', 'Taylor', '222 Cherry St', 'Denver', 'CO', 'william123'),
    ('Sarah', 'Martinez', '444 Pine St', 'Phoenix', 'AZ', 'sarah456');

Пример 1: Прикажите пуна имена

Као први пример, хајде да спојимо колоне фирст_наме и тхе ласт_наме да добијемо пуно_име. Да бисмо то урадили, можемо користити СКЛ ЦОНЦАТ функцију у СЕЛЕЦТ упиту као што је приказано:

SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

Требало би да добијете следећи излаз:

+----------------+
| full_name      |
+----------------+
| John Smith     |
| Alice Johnson  |
| Bob Williams   |
| Mary Davis     |
| James Brown    |
| Emily Jones    |
| Michael Miller |
| Jessica Wilson |
| William Taylor |
| Sarah Martinez |
+----------------+
10 rows in set (0.00 sec)

Поред имена_име и презимена, приметите да смо такође користили размак као сепаратор—наведен литералним стрингом ‘ ‘.

Пример 2: Конструишите адресе

Узмимо сада још један пример.

У табели запослених имамо колоне за улицу, град и државу. Дакле, можемо изабрати пуну_адресу спајањем ова три поља са зарезом као сепаратором:

SELECT CONCAT(street, ', ', city, ', ', state) AS full_address FROM employees;

Ево излаза:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| 456 Elm St, Boston, MA    |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.00 sec)

Пример 3: Креирајте УРЛ адресе профила

Подсетимо се да имамо поље корисничког имена у табели запослених.

  Како блокирати некога а да они не знају у Виберу

Рецимо да имате основни домен хттпс://ввв.екампле.цом/, а профили корисника су на хттпс://ввв.екампле.цом/усер. Профил_урл можете генерисати користећи ЦОНЦАТ функцију на следећи начин:

SELECT CONCAT('https://www.example.com/user/', username) AS profile_url 
FROM employees;

Као што се види, добијамо УРЛ адресе профила за све запослене:

+-----------------------------------------+
| profile_url                             |
+-----------------------------------------+
| https://www.example.com/user/john123    |
| https://www.example.com/user/alice456   |
| https://www.example.com/user/bob789     |
| https://www.example.com/user/mary456    |
| https://www.example.com/user/james789   |
| https://www.example.com/user/emily123   |
| https://www.example.com/user/michael456 |
| https://www.example.com/user/jessica789 |
| https://www.example.com/user/william123 |
| https://www.example.com/user/sarah456   |
+-----------------------------------------+
10 rows in set (0.00 sec)

Руковање НУЛЛ вредностима

У табели запослених сви записи имају сва поља. Али шта ако имате једно или више поља са НУЛЛ вредностима?

Узмимо пример за овај случај. Овде ажурирамо запис који одговара ИД = 2 да бисмо колону улице поставили на НУЛЛ:

UPDATE employees
SET street = NULL
WHERE ID = 2; -- Update the record with ID 2
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Сада користимо ЦОНЦАТ да изаберемо пуну_адресу:

SELECT CONCAT(street, ', ', city, ', ', state) AS full_address FROM employees;

Ево излаза:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| NULL                      |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.00 sec)

Приметите да је други елемент у скупу резултата НУЛЛ.

Али бисмо волели да резултат буде спајање колона града и државе да бисмо добили грубу представу о адреси. Када имате такве НУЛЛ вредности, можете користити ЦОНЦАТ_ВС као алтернативу функцији ЦОНЦАТ. Хајде да видимо како то функционише.

  Шта гледати на Куибију: 10 најбољих емисија

Коришћење ЦОНЦАТ_ВС за руковање НУЛЛ вредностима током конкатенације

ЦОНЦАТ_ВС је алтернатива ЦОНЦАТ-у која се може користити ако сумњате да једно или више поља садржи НУЛЛ вредности.

Функцију ЦОНЦАТ_ВС можете користити на следећи начин:

CONCAT_WS(separator, string_1, string_2,..., string_n)

Сада покрените следећи СЕЛЕЦТ упит:

SELECT CONCAT_WS(', ', street, city, state) AS full_address FROM employees;

Добићете следећи излаз:

+---------------------------+
| full_address              |
+---------------------------+
| 123 Main St, New York, NY |
| Boston, MA                |
| 789 Oak St, Chicago, IL   |
| 321 Pine St, Houston, TX  |
| 555 Cedar St, Seattle, WA |
| 777 Maple St, Atlanta, GA |
| 999 Birch St, Miami, FL   |
| 111 Walnut St, Dallas, TX |
| 222 Cherry St, Denver, CO |
| 444 Pine St, Phoenix, AZ  |
+---------------------------+
10 rows in set (0.01 sec)

Као што се види, за другу ставку у скупу резултата, добијамо ‘Бостон МА’ пошто је поље улице НУЛЛ.

⚠ Када користите ЦОНЦАТ_ВС, потребно је навести сепаратор. Ако не наведете сепаратор, онда је резултат НУЛЛ ако је једна или више колона НУЛЛ (слично ЦОНЦАТ).

Окончање

Хајде да прегледамо шта смо научили:

  • Када постављате упит за табелу базе података да бисте преузели податке, можда ћете желети да повежете више колона стрингова да бисте добили корисније и лаке за тумачење резултате упита. Да бисте то урадили, можете користити функцију ЦОНЦАТ у СКЛ-у са синтаксом ЦОНЦАТ(стринг_1, стринг_2, …, стринг_н).
  • Можете спојити стринг литерале, колоне или комбинацију оба. Међутим, ако постоји једна или више НУЛЛ вредности, резултат за тај одређени запис је НУЛЛ. Да бисте ово решили, можете користити ЦОНЦАТ_ВС са синтаксом ЦОНЦАТ_ВС(сепаратор, стринг_1, стринг_2, …, стринг_н).
  • ЦОНЦАТ_ВС елегантније рукује НУЛЛ вредностима тако што спаја само оне стрингове који су присутни помоћу наведеног сепаратора.

За брзи преглед СКЛ команди и њихове употребе, можете обележити овај СКЛ Цхеат Схеет.