Danh sách các hàm chuỗi
Nhiều chức năng hơn ngày và giờ - chỉ có loại Chuỗi. Cái nào trong SQL được cung cấp bởi các loại CHAR(n) và VARCHAR(n). Hãy nhớ lại những điều phổ biến nhất trong số họ:
Chức năng | Sự miêu tả | |
---|---|---|
1 | CHIỀU DÀI (str) | Trả về độ dài của chuỗi đã truyền tính bằng byte |
2 | CHAR_LENGTH(str) | Trả về độ dài của chuỗi đã truyền theo ký tự |
3 | VỊ TRÍ(chất nền,str), | Tìm kiếm một chuỗi con trong một chuỗi tương tự như phương thức indexOf() |
4 | VỊ TRÍ (chất nền, str, vị trí) | Tìm kiếm một chuỗi con trong một chuỗi bắt đầu từ pos |
5 | CONCAT(str1,str2,...) | Nối nhiều dòng |
6 | SUBSTR(), SUBSTRING() | Trả về một chuỗi con được cung cấp bởi một dãy ký tự |
7 | THẤP HƠN(str) | Chuyển đổi một chuỗi thành chữ thường |
số 8 | TRÊN(str) | Chuyển đổi một chuỗi thành chữ hoa |
9 | THAY THẾ() | Thay thế một chuỗi con trong một chuỗi |
10 | CUỘC THI ĐẤU() | Kiểm tra xem một chuỗi có khớp với một mẫu nhất định không |
mười một | TRIM(str) | Cắt các ký tự trống ở đầu và cuối chuỗi |
12 | LTRIM(str) | Cắt các ký tự trống ở đầu chuỗi |
13 | RTRIM(str) | Cắt các ký tự trống ở cuối chuỗi |
14 | TO_BASE64(str) | Chuyển đổi một chuỗi thành Base64 |
15 | FROM_BASE64(str) | Chuyển đổi một chuỗi từ Base64 |
Tôi cố tình nhóm các chức năng thành các nhóm nhỏ để dễ hiểu cách làm việc với chúng. Dưới đây chúng tôi sẽ xem xét một chức năng từ mỗi nhóm. Bạn có thể tìm thấy danh sách đầy đủ các hàm để làm việc với chuỗi trong tài liệu chính thức .
Hãy chuyển đổi chuỗi
Trước tiên chúng ta hãy xử lý các hàm đơn giản nhất chỉ chuyển đổi một chuỗi thành một dạng hơi khác. Ví dụ: chuyển đổi một chuỗi thành chữ hoa và chữ thường. Nói chung, hành vi của chúng tương tự như các chức năng tương tự trong ngôn ngữ Java.
Vì vậy, tôi sẽ chỉ đưa ra một bảng với một vài ví dụ.
# | Lời yêu cầu | Kết quả |
---|---|---|
1 | CHỌN ĐỘ DÀI ('văn bản') | 4 |
2 | CHỌN LENGTH ('Xin chào') | 12 |
3 | CHỌN THẤP HƠN ('Xin chào') | Xin chào |
4 | CHỌN UPPER ('Xin chào') | XIN CHÀO |
5 | CHỌN SUBSTR ('Xin chào', 2, 3) | dòng sông |
6 | SELECT SUBSTR ('Xin chào, bạn khỏe không?', 8) | Bạn có khỏe không? |
Các chức năng hoạt động như mong đợi, giống như các đối tác của chúng từ JDK.
Thông báo trước duy nhất: trong dòng đầu tiên, kết quả là 4, không phải 8. Vấn đề là 1 byte (mã hóa ASCII) được sử dụng trong yêu cầu mã hóa các ký tự Latinh. Nhưng nếu bạn làm việc với dữ liệu từ cơ sở dữ liệu, thì độ dài của chuỗi sẽ phụ thuộc vào cài đặt mã hóa cơ sở dữ liệu . Bạn sẽ thấy nhiều điều bất ngờ khi làm việc với cơ sở dữ liệu :)
Các hành động phức tạp với chuỗi
Chà, hãy xem xét những thứ phức tạp hơn khi làm việc với chuỗi. Bạn sẽ nghĩ ra điều gì...
Hãy hiển thị các nhiệm vụ từ bảng nhiệm vụ và nếu thời hạn nhiệm vụ đã qua, thì hãy thêm từ HẾT HẠN vào phần mô tả nhiệm vụ!
Nghe có vẻ thú vị. Mặc dù chúng ta chưa học các điều kiện phức tạp, vì vậy hãy đơn giản hóa nhiệm vụ một chút. Chúng ta hãy viết một truy vấn sẽ hiển thị danh sách các tác vụ trước đây, nhưng hãy đảm bảo thêm từ “HẾT HẠN!” vào tiêu đề. .
Để làm điều này, chúng ta sẽ phải sử dụng hàm CONCAT:
SELECT CONCAT( 'EXPIRED! ', name) FROM task
WHERE deadline < CURDATE()
Kết quả của truy vấn này sẽ là:
concat('HẾT HẠN! ', tên) |
---|
HẾT HẠN! Sửa lỗi ở frontend |
Sự giới thiệu. Nếu bạn chỉ cần chuyển đổi dữ liệu sang một dạng hơi khác, thì điều này cũng có thể được thực hiện ở cấp độ mã Java. Nhưng nếu bạn muốn sử dụng các hàm chuỗi phía máy chủ SQL (bên trong WHERE), thì bạn chắc chắn không thể làm gì nếu không có chúng.