Chuyển đến nội dung chính
Mô-đun 6 · Bài học 1 trong tổng số 421/57 trong khóa học~12 min
Bài học theo mô-đun (1/4)

Hàm chuỗi

PostgreSQL có hàng tá hàm để thao tác với chuỗi. Trong bài học này chúng tôi xem xét những vấn đề phổ biến nhất trong công việc thực tế: chuẩn hóa (LOWER/UPPER), đo (LENGTH), soạn (|| / CONCAT), trích xuất (SUBSTRING), dọn dẹp (TRIM), thay thế (REPLACE) và tìm kiếm mẫu (LIKE / ILIKE).

Các chức năng chúng tôi sẽ sử dụng

SQL
LOWER('Alice')                -- 'alice'
UPPER('alice')                -- 'ALICE'
LENGTH('alice')               -- 5
'a' || 'b'                    -- 'ab'  (concatenazione)
CONCAT('a', 'b', 'c')         -- 'abc' (versione "funzione")
SUBSTRING('hello' FROM 2 FOR 3) -- 'ell'
TRIM(' alice ')               -- 'alice'
REPLACE('foo bar', 'bar','x') -- 'foo x'

|| là toán tử SQL tiêu chuẩn để nối chuỗi; CONCAT là dễ dãi hơn (nó bỏ qua NULL, trong khi || tuyên truyền chúng: 'a' || NULL → NULL).

THÍCH và ILIKE: tìm kiếm theo mẫu

LIKE tìm kiếm mẫu: % = bất kỳ chuỗi nào, _ = một mẫu nhân vật. Nó phân biệt chữ hoa chữ thường. ILIKE là PostgreSQL biến thể không phân biệt chữ hoa chữ thường:

SQL
WHERE name LIKE  '%Cuffie%'   -- match esatto "Cuffie"
WHERE name ILIKE '%cuffie%'   -- match anche "CUFFIE", "Cuffie", "cuffie"
WHERE email LIKE  '%@example.com'
WHERE first_name LIKE 'A_____'  -- inizia per A, lungo 6 (A + 5 caratteri)

Để tìm kiếm % hoặc _ theo nghĩa đen bên trong mẫu, hãy sử dụng ESCAPE:

SQL
WHERE titolo LIKE '%50\%%' ESCAPE '\';   -- contiene "50%"

Kết hợp chức năng

Các hàm soạn thảo giống như trong bất kỳ ngôn ngữ nào:

SQL
-- Email "normalizzata" e iniziali in maiuscolo:
SELECT LOWER(email) AS email_norm,
       UPPER(SUBSTRING(first_name FROM 1 FOR 1)) || '.'
       || UPPER(SUBSTRING(last_name  FROM 1 FOR 1)) || '.' AS iniziali
FROM   customers
ORDER BY id;

Hãy thử nó

tập thể dục#sql.m6.l1.e1
Nỗ lực: 0Đang tải…

Đối với mỗi khách hàng, hãy hiển thị email bằng chữ thường (email cột) và tên đầy đủ là 'first_name Last_name' (cột full_name). Đặt hàng theo id.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

LOWER cho cột đầu tiên, || để nối với một khoảng trống ở giữa.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#sql.m6.l1.e2
Nỗ lực: 0Đang tải…

Tìm tất cả các sản phẩm có chứa từ 'laptop' (trong mọi trường hợp) trong tên. Chỉ hiển thị cột tên. Đặt hàng theo tên.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

ILIKE không phân biệt chữ hoa chữ thường. Sử dụng '%laptop%' để khớp với 'laptop' ở bất kỳ vị trí nào.

Giải pháp khả dụng sau 3 lần thử