MySQL / String функцүүд
String функцүүд
MySQL нь текст боловсруулах олон функцтэй. Хэрэглэгчийн нэр форматлах, хайлт хийх, өгөгдөл цэвэрлэх зэрэгт өдөр тутам хэрэглэгддэг.
CONCAT — текст нэгтгэх
sql
SELECT CONCAT('Сайн ', 'уу, ', 'дэлхий!');
-- Үр дүн: Сайн уу, дэлхий!
-- Хэд хэдэн багана нэгтгэх
SELECT CONCAT(first_name, ' ', last_name) AS бүтэн_нэр
FROM users;
-- NULL байвал бүхэлдээ NULL болно
SELECT CONCAT('Нэр: ', NULL);
-- Үр дүн: NULL
-- NULL-с хамгаалах
SELECT CONCAT('Нэр: ', COALESCE(name, 'Тодорхойгүй'))
FROM users;
CONCAT_WS(хязгаарлагч, ...) — тусгаарлагчтайгаар нэгтгэнэ:
sql
SELECT CONCAT_WS(', ', 'Болд', 'Дорж', NULL, 'Оюун');
-- Үр дүн: Болд, Дорж, Оюун (NULL алгасагдана)
LENGTH ба CHAR_LENGTH
sql
SELECT LENGTH('MySQL'); -- 5 (байт тоо)
SELECT CHAR_LENGTH('MySQL'); -- 5 (тэмдэгтийн тоо)
-- Кирилл үсгэнд ялгаа гарна (UTF-8 нэг кирилл = 2 байт)
SELECT LENGTH('Сайн уу'); -- 14 (байт)
SELECT CHAR_LENGTH('Сайн уу'); -- 7 (тэмдэгт)
Монгол текстэд заавал CHAR_LENGTH ашиглах — байт тооны оронд жинхэнэ тэмдэгтийн тоо авна.
SUBSTRING — хэсэг авах
sql
-- SUBSTRING(текст, эхлэх_байрлал, урт)
SELECT SUBSTRING('MySQL Database', 1, 5);
-- Үр дүн: MySQL
SELECT SUBSTRING('MySQL Database', 7);
-- Үр дүн: Database (7-оос эцэс хүртэл)
SELECT SUBSTRING('MySQL Database', -8);
-- Үр дүн: Database (сүүлийн 8 тэмдэгт)
Байрлал 1-ээс эхэлдэг — 0 биш.
UPPER ба LOWER
sql
SELECT UPPER('mysql database'); -- MYSQL DATABASE
SELECT LOWER('MYSQL DATABASE'); -- mysql database
-- И-мэйл хадгалахдаа жижиг үсгээр стандартчилах
INSERT INTO users (email)
VALUES (LOWER('Oyuun@Example.COM'));
-- Хадгалагдах утга: oyuun@example.com
TRIM — хоосон зай арилгах
sql
SELECT TRIM(' MySQL '); -- 'MySQL'
SELECT LTRIM(' MySQL '); -- 'MySQL ' (зүүн талаасаа)
SELECT RTRIM(' MySQL '); -- ' MySQL' (баруун талаасаа)
-- Тодорхой тэмдэгт арилгах
SELECT TRIM(BOTH '-' FROM '---MySQL---'); -- 'MySQL'
Хэрэглэгч оруулсан мэдээллийн эхэнд эцэст ихэвчлэн санамсаргүй хоосон зай байдаг — хадгалахын өмнө TRIM хийх нь зөв.
REPLACE — орлуулах
sql
SELECT REPLACE('Hello World', 'World', 'MySQL');
-- Үр дүн: Hello MySQL
-- Утасны дугаарнаас зай арилгах
UPDATE users
SET phone = REPLACE(REPLACE(phone, ' ', ''), '-', '');
-- '976 9911-2233' → '97699112233'
LIKE — хэв загварт тохируулах хайлт
sql
-- % — ямар ч урттай текст
SELECT * FROM users WHERE name LIKE 'Б%'; -- Б-ээр эхэлсэн
SELECT * FROM users WHERE name LIKE '%д'; -- д-ээр дуусах
SELECT * FROM users WHERE email LIKE '%@gmail.com';
-- _ — яг нэг тэмдэгт
SELECT * FROM users WHERE code LIKE 'MN___'; -- MN + 3 тэмдэгт
LIKE нь том жижиг үсэг ялгахгүй (Болд = болд). Ялгах шаардлагатай бол LIKE BINARY ашиглана.
REGEXP — тогтмол илэрхийлэл
sql
-- Зөвхөн тоо агуулсан
SELECT * FROM products WHERE code REGEXP '^[0-9]+$';
-- И-мэйл шалгах (хялбаршуулсан)
SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$';
-- Монгол кирилл үсэг агуулсан
SELECT * FROM content WHERE text REGEXP '[А-ЯӨҮа-яөү]';
Бусад хэрэгтэй функцүүд
sql
-- INSTR: байрлал олох (олдохгүй бол 0)
SELECT INSTR('MySQL Database', 'Data'); -- 7
-- LPAD / RPAD: урт нөхөх
SELECT LPAD('42', 5, '0'); -- 00042
SELECT RPAD('Код', 6, '-'); -- Код---
-- REVERSE: урвуу болгох
SELECT REVERSE('MySQL'); -- LQSyM
-- REPEAT: давтах
SELECT REPEAT('*', 5); -- *****
Жишээ: өгөгдөл цэвэрлэх
sql
-- Хэрэглэгчийн мэдээллийг стандартчилах
UPDATE users SET
email = LOWER(TRIM(email)),
first_name = TRIM(first_name),
last_name = TRIM(last_name),
phone = REPLACE(REPLACE(REPLACE(phone, ' ', ''), '-', ''), '+', '');
Дараагийн хичээлд:
Date функцүүд — огноо цаг боловсруулах NOW(), DATE_FORMAT(), DATEDIFF() зэрэг функцүүдийг үзнэ.