Bài 3. Các hàm hệ thống & xử lý chuỗi
Cơ sở dữ liệu
Nội dung:
- Các hàm hệ thống Sql
- Xử lý chuỗi
- Khi làm việc với các biểu thức chứa nhiều kiểu dữ liệu khác nhau, phải thực hiện chuyển đổi giữa các kiểu dữ liệu.
- Hai loại chuyển đổi kiểu dữ liệu
Chuyển đổi ngầm (do SQL Server tự thực hiện)
Chuyển đổi tường minh (sử dụng các hàm thư viện)
- Chuyển đổi ngầm
- Gán giá trị cho một cột có kiểu dữ liệu khác với giá trị được gán.
- Biểu thức tính toán có sự tham gia của nhiều loại dữ liệu khác nhau (SQL chuyển kiểu có độ ưu tiên thấp sang kiểu có độ ưu tiên cao hơn)
- Lập trình viên cần nắm chuyển đổi ngầm tránh lỗi
- Việc chuyển đổi xảy ra tự động.
-
Thứ tự ưu tiên của các kiểu dữ liệu phổ biến trong SQL Server

-
Xét ví dụ: SELECT 100 * .5 => Kết quả có kiểu dữ liệu gì?

-
Kết là 50.0 vì .5 có độ ưu tiên cao hơn**
-
Xét ví dụ: SELECT 'Today is ' + GETDATE()=>Kết quả kiểu dữ liệu là gì?

-
Không thể chuyển “Today is” thành kiểu DateTime
- Chuyển đổi tường minh
- Chuyển dữ liệu có kiểu dữ liệu với độ ưu tiên cao hơn về kiểu dữ liệu có độ ưu tiên thấp hơn.
- Sử dụng hàm CAST hoặc CONVERT để thực hiện phép chuyển đổi tường minh.
-Ví dụ: chuyển kiểu có độ ưu tiên cao DateTime về kiểu có độ ưu tiên thấp hơn varchar:
SELECT 'Today is ' + cast(GETDATE() as varchar)

- Sử dụng hàm chuyển đổi dữ liệu Hàm CAST

- Hàm CAST dùng để chuyển đổi tường minh, hay ép kiểu, một biểu thức từ kiểu dữ liệu này sang kiểu dữ liệu khác
- Dùng để chuyển đổi tường minh một biểu thức từ kiểu dữ liệu này sang kiểu dữ liệu khác
- Khi chuyển đổi sang kiểu dữ liệu kí tự và cần định dạng hiển thị cho dữ liệu.
- Tham số định dạng: định dạng cho các giá trị ngày/giờ, số thực, tiền tệ khi chuyển đổi sang kiểu kí tự
-
Một số ví dụ

-
So sánh giữa Cast và CONVERT:
-
SELECT 'Today''s date is ' + CAST(GETDATE() as varchar)

-
SELECT 'Today''s date is ' + CONVERT(VARCHAR, GETDATE(), 101)

- PI: trả về số Pi
- SQRT: tính căn bậc 2, trả về dữ liệu kiểu float - SELECT SQRT(25) => 5
- SQUARE: bình phương - SELECT SQUARE(3)=> 9
- CEILING và FLOOR
- ROUND: làm tròn giá trị theo vị trí thập phân xác định
- ABS: Lấy giá trị tuyệt đối
Ví dụ lương trung bình của nv là 31000, thống kê mức độ chênh lệch lương của các nv so với lương trung bình => không quan tâm số âm hay dương

Làm việc với kiểu dữ liệu chuỗi

- Ví dụ

Hàm CHARINDEX
- Cú pháp
CHARINDEX(find, search[, start])

Hàm SubString
- Cú pháp
SubString(find, start, length)

Hàm REPLACE
- Cú pháp
REPLACE(search, find, replace)
- REPLACE

Các hàm khác

- Demo các hàm xử lý chuỗi

- Vấn đề thường xảy ra với dữ liệu chuỗi
Sắp thứ tự: Khi sắp xếp một cột kiểu chuỗi chứa số, bạn có thể nhận được kết quả không mong đợi
Phân tách kí tự: Nếu chuỗi gồm hai hay nhiều thành phần, bạn có thể phân tách chuỗi thành những thành phần độc lập.
- Giải quyết vấn đề
Để tránh điều đó, bạn chuyển đổi cột kiểu chuỗi thành giá trị số trong mệnh đề ORDER BY
Sử dụng hàm CHARINDEX để định vị những ký tự phân tách.
Sau đó, dùng hàm LEFT, RIGHT, SUBSTRING và LEN để trích ra những thành phần độc lập
- Ví dụ
Bảng NhanVien được sắp xếp bởi cột MaNV khi có dùng Cast

Các hàm ngày tháng năm
-
GETDATE trả về ngày tháng năm hiện tại (bao gồm ngày,tháng năm,giờ, phút,giây)

-
DATENAME: truy cập tới các thành phần liên quan ngày tháng

- Trong SQL Server, dữ liệu ngày/giờ được xử lý dưới định dạng tháng/ngày/năm
- Để sử dụng định dạng ngày/giờ dưới dạng ngày/tháng/năm, cần chú ý:
Khi sử dụng câu lệnh INSERT phải truyền dữ liệu ngày/giờ theo định dạng tháng/ngày/năm
Khi truy vấn dữ liệu, để lấy về giá trị có định dạng ngày/tháng/năm, có thể sử dụng hàm CONVERT với mã định dạng 3 hoặc 103
Chỉnh sửa trên GitHubCập nhật: 11/22/2025, 2:13:02 AM