Trong SQLite, substring()
là bí danh cho substr()
.
Nó trả về một chuỗi con từ một chuỗi, dựa trên một vị trí bắt đầu nhất định trong chuỗi. Hai đối số là bắt buộc và đối số tùy chọn thứ ba được chấp nhận.
substring()
đặt tên đã được giới thiệu trong SQLite 3.34.0, được phát hành vào ngày 1 tháng 12 năm 2020. Lý do là substring()
cú pháp được giới thiệu là để tương thích với SQL Server.
Cú pháp
Vì vậy, bây giờ bạn có thể gọi hàm theo bất kỳ cách nào sau đây:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
-
X
là chuỗi đầy đủ chứa chuỗi con bạn muốn trả về. -
Y
là vị trí của ký tự đầu tiên của chuỗi con mà bạn muốn trả về từ chuỗi đó. -
Z
là số ký tự mà bạn muốn trả về. Nếu bỏ qua, tất cả các ký tự tiếp theo sẽ được trả về (bắt đầu từY
).
Nếu X
là một chuỗi sau đó các chỉ số ký tự tham chiếu đến các ký tự UTF-8 thực tế. Nếu X
là BLOB thì các chỉ số tham chiếu đến byte.
Như đã đề cập, substring()
cú pháp chỉ có sẵn từ SQLite 3.34.0.
Ví dụ với 3 đối số
Dưới đây là một ví dụ cơ bản để minh họa cách sử dụng substring()
với ba đối số.
SELECT substring('Dolemite', 3, 4);
Kết quả:
lemi
Ví dụ với 2 đối số
Nếu tôi bỏ qua đối số thứ ba từ ví dụ trước, tôi nhận được kết quả sau.
SELECT substring('Dolemite', 3);
Kết quả:
lemite
Điểm xuất phát phủ định
Bạn có thể cung cấp giá trị âm cho đối số thứ hai. Khi bạn làm điều này, ký tự đầu tiên của chuỗi con được tìm thấy bằng cách đếm từ bên phải thay vì bên trái.
SELECT substring('Dolemite', -3);
Kết quả:
ite
Đây là một ví dụ khác, lần này tôi chỉ định độ dài của chuỗi con.
SELECT substring('Dolemite', -7, 4);
Kết quả:
olem
Vì vậy, các giá trị âm có cùng tác động như khi sử dụng substring()
trong MySQL. MySQL cũng có substr()
hàm, là từ đồng nghĩa của substring()
của nó hàm số.
Tuy nhiên, điều này khác với cách SQL Server xử lý các giá trị âm. Khi bạn chuyển một giá trị âm cho substring()
trong SQL Server, nó sẽ chỉ bắt đầu đếm tại một điểm tưởng tượng trước khi chuỗi bắt đầu.
Độ dài chuỗi con phủ định
Ví dụ trước đã sử dụng một điểm bắt đầu phủ định. Trong ví dụ này, tôi sẽ sử dụng độ dài âm. Điều này có nghĩa là tôi sẽ cung cấp một giá trị âm cho đối số thứ ba.
SELECT substring('Dolemite', -1, -4);
Kết quả:
emit
Vì vậy, việc cung cấp giá trị âm cho đối số thứ ba dẫn đến các ký tự đứng trước điểm bắt đầu được trả về.
Điều này cũng áp dụng khi đối số thứ hai là một giá trị dương.
SELECT substring('Dolemite', 6, -4);
Kết quả:
olem
Ví dụ về cơ sở dữ liệu
Dưới đây là một ví dụ sử dụng substring()
trong một truy vấn cơ sở dữ liệu đối với cơ sở dữ liệu mẫu Chinook.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Kết quả:
Chuỗi consubstring(Name, 1, 10) Name ---------------------- --------------------------------- Zeca Pagod Zeca Pagodinho Youssou N' Youssou N'Dour Yo-Yo Ma Yo-Yo Ma Yehudi Men Yehudi Menuhin Xis Xis Wilhelm Ke Wilhelm Kempff Whitesnake Whitesnake Vinícius E Vinícius E Qurteto Em Cy Vinícius E Vinícius E Odette Lara Vinícius D Vinícius De Moraes & Baden Powell
Trong trường hợp này, tôi đã trả lại mười ký tự đầu tiên từ Name
cột. Tôi cũng đã trả lại toàn bộ nội dung của Name
để so sánh kết quả.