Cơ sở dữ liệu của chúng tôi có một bảng tên là
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;9 với dữ liệu trong các cột
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;0 và
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;1. Chúng tôi muốn xóa '
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;2' ở đầu và '
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;3' ở cuối mỗi
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;1idaddress1www. ví dụ. com2www. Google. com3www. tìm hiểu. com
Giải pháp 1
Để xóa 4 ký tự đầu tiên
SELECT SUBSTR[address, 5, LENGTH[address] -4] AS substring FROM web_address;
Để xóa 4 ký tự cuối cùng
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;
Để xóa 4 ký tự đầu và 4 ký tự cuối
SELECT SUBSTR[address, 5, LENGTH[address] -8] AS substring FROM web_address;
Giải pháp 2
Để xóa 4 ký tự đầu tiên
________số 8Để xóa 4 ký tự cuối cùng
SELECT SUBSTRING[address, 1, LENGTH[address] -4] AS substring FROM web_address;
Để xóa 4 ký tự đầu và 4 ký tự cuối
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;0
Giải pháp 3
Để xóa tất cả các ký tự trước ký tự thứ hai ‘. ' từ bên phải
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;1
Để xóa tất cả các ký tự sau ký tự thứ hai ‘. ' từ bên trái
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;2
Để xóa tất cả các ký tự sau ký tự thứ hai ‘. ’ từ bên trái, sau đó xóa tất cả các ký tự trước ký tự ‘ đầu tiên. ' từ bên phải
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;3
Kết quả là
substringexamplegooglelearnsqlThảo luận
Cả giải pháp thứ nhất và thứ hai đều xóa một số ký tự được chỉ định khỏi văn bản bằng hàm
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;5 hoặc
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;6.
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;5 là từ đồng nghĩa với
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;6. Cả hai đều yêu cầu chuỗi và vị trí bắt đầu làm đối số. Đối số cuối cùng, xác định số lượng ký tự cần trích xuất, là tùy chọn. Nếu đối số cuối cùng bị bỏ qua, toàn bộ chuỗi [từ điểm bắt đầu] sẽ được trả về
Trong giải pháp thứ ba, hàm
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;9 xóa văn bản trước hoặc sau các ký tự được chỉ định. Nó yêu cầu đối số là chuỗi, ký tự và số lượng phiên bản của ký tự sẽ gặp ở nơi bắt đầu trích xuất văn bản
Hàm Chuỗi con MySQL được sử dụng để trích xuất một chuỗi con hoặc một phần chuỗi so với chuỗi đầu vào. Như tên gợi ý, hàm Chuỗi con hoạt động trên đầu vào chuỗi và trả về một chuỗi con nhỏ hơn theo các tùy chọn đã chỉ định
Chúng ta cũng sẽ tìm hiểu về một biến thể khác của SUBSTRING có tên là SUBSTRING_INDEX. Hàm này chấp nhận ký tự hoặc giá trị Chuỗi làm dấu phân cách và thực hiện tìm kiếm theo giá trị dấu phân cách đã cho
=> Nhấp vào đây để xem toàn bộ loạt bài hướng dẫn về MySQL
Chúng ta cũng sẽ xem xét một số ví dụ để hiểu cách sử dụng các hàm này trong khi truy vấn dữ liệu như một phần của truy vấn CHỌN
Bạn sẽ học được gì
- MySQL SUBSTRING
- MySQL SUBSTRING Ví dụ
- không tính
- Với Đếm
- Với Giá trị Chỉ số Âm
- Chỉ số nằm ngoài giới hạn
- MySQLSUBSTRING_INDEX
- Tìm kiếm một nhân vật
- Tìm kiếm một chuỗi
- Tìm kiếm một chuỗi không tồn tại
- Tìm kiếm ký tự hoặc chuỗi theo thứ tự đảo ngược
- Các Ứng Dụng Của Hàm SUBSTRING MySQL
- Các câu hỏi thường gặp
- Phần kết luận
- đề xuất đọc
MySQL SUBSTRING
cú pháp
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;9
Có 2 cách để chúng ta có thể sử dụng hàm SUBSTRING
Hãy hiểu cú pháp trước khi đi sâu vào các ví dụ
- {Chuỗi giá trị}. Đây là giá trị Chuỗi thực tế hoặc tên cột chứa Chuỗi sẽ được xử lý
- {start_index}. start_index là chỉ mục từ trái hoặc phải nơi Chuỗi con sẽ được bắt đầu. Các giá trị có thể dương hoặc âm tùy thuộc vào việc chúng ta muốn trích xuất Chuỗi từ bên trái hay bên phải tương ứng. Điều này sẽ trở nên rõ ràng hơn với các ví dụ
- {đếm}. Trường này là tùy chọn và chỉ định số lượng ký tự từ trường start_index mà Chuỗi con cần được trích xuất. Nếu không được đề cập, thì toàn bộ Chuỗi bắt đầu từ start_index phù hợp sẽ được trả về
Định dạng 2 là một biến thể của định dạng 1 ngoại trừ việc nó dễ đọc hơn bằng cách sử dụng các từ khóa TỪ và CHO. Vì vậy, ở đây, TỪ được sử dụng trước khi đề cập đến giá trị start_index và FOR được sử dụng trước khi đề cập đến số lượng
Hãy xem một số ví dụ để hiểu chức năng MySQL SUBSTRING
Hãy lấy giá trị Chuỗi đầu vào làm Trợ giúp kiểm thử phần mềm
Các chỉ mục chuỗi sẽ giống như bảng dưới đây
123456789101112131415161718192021Trợ giúp Kiểm tra phần mềm
MySQL SUBSTRING Ví dụ
không tính
Giả sử chúng ta muốn trích xuất văn bản Trợ giúp từ Chuỗi ở trên – H đang có chỉ số là 18
Hãy xem truy vấn dưới đây
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;0
Điều quan trọng cần lưu ý ở đây là chúng tôi chưa đề cập đến bất kỳ giá trị nào cho số đếm, nhưng chúng tôi vẫn nhận được Chuỗi chính xác - điều này là do khi số đếm bị bỏ qua, toàn bộ Chuỗi bắt đầu từ chỉ mục đã cho được trả về
Trong trường hợp này, nếu chúng ta đề cập đến Chỉ mục bắt đầu, ví dụ: cho 'T' [Chỉ số 10]
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;1
Như bạn có thể thấy ở trên, đầu ra chứa toàn bộ văn bản 'Testing Help'
Với Đếm
Bây giờ, hãy xem một ví dụ mà chúng ta sẽ đề cập đến số ký tự được trả về
Giả sử chúng ta chỉ muốn trích xuất từ 'Thử nghiệm' từ Chuỗi 'Trợ giúp Kiểm tra Phần mềm'. Sau đó, chúng ta có thể đề cập đến số đếm là – 7 [là độ dài của từ 'Thử nghiệm]
Hãy xem truy vấn dưới đây
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;2
Ở đây chúng tôi đã mô tả cả chỉ mục bắt đầu và số lượng ký tự như một phần của truy vấn để nhận được kết quả cần thiết
Với Giá trị Chỉ số Âm
Cho đến nay, đối với các ví dụ mà chúng ta đã thấy, chúng ta đã chỉ định start_index là một giá trị dương
Chúng ta cũng có thể chỉ định start_index là số âm, điều này đơn giản có nghĩa là thay vì đếm từ bên trái, công cụ MySQL sẽ cố gắng đếm Start Index từ cuối Chuỗi
Hãy xem một ví dụ
Đối với chuỗi 'Trợ giúp kiểm tra phần mềm' của chúng tôi, hãy thêm một hàng bên dưới để xác định các chỉ mục phù hợp
L123456789101112131415161718192021Trợ giúp Kiểm tra phần mềmR212019181716151413121110987654321
Vì vậy, hàng dưới cùng ở đây đại diện cho các chỉ mục phù hợp. Bây giờ, giả sử chúng ta muốn trích xuất từ 'Thử nghiệm' bằng cách sử dụng hàm SUBSTRING của MySQL với chỉ mục phù hợp
Chỉ số bên phải cho 'T' trong Thử nghiệm là 12 [và chỉ số bên trái là 10]
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;3
Như bạn có thể thấy trong ví dụ trên, việc đề cập đến đúng chỉ mục dưới dạng giá trị âm sẽ vẫn mang lại kết quả tương tự
Chỉ số nằm ngoài giới hạn
Bây giờ, hãy thử một số tình huống tiêu cực
- Khi start_index được chỉ định không tồn tại. tôi. e. chỉ mục được chỉ định nằm ngoài giới hạn, thì đầu ra sẽ trống
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;4
- Khi số lượng được chỉ định là âm hoặc lớn hơn tổng độ dài của chuỗi, thì đầu ra sẽ chỉ là phần còn lại của Chuỗi [bắt đầu từ start_index được chỉ định]
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;5
Bạn có thể xem ở trên, ở đây số lượng được đề cập là 100, nhưng Chuỗi chỉ dài 21 ký tự
- Hãy thử một kịch bản khác với số lượng được đề cập là âm
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;6
Ở đây cũng vậy, sẽ không có lỗi và sẽ chỉ có một chuỗi trống sẽ là đầu ra
MySQLSUBSTRING_INDEX
Đây là một biến thể khác của hàm MySQL SUBSTRING
Ở đây, thay vì đề cập đến giá trị thực của start_index, chúng ta chỉ cần đề cập đến ký tự và chỉ mục cũng như số lần dấu phân cách cần được tìm kiếm trước khi trả về kết quả
Một điểm quan trọng cần lưu ý ở đây là SUBSTRING_INDEX
MySQL SUBSTRING INDEX chức năng
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;7
- {StringValue/Cột}. Đầu vào Chuỗi thực tế hoặc tên cột trong truy vấn CHỌN
- dấu phân cách. Đó là ký tự hoặc chuỗi con cần tìm để trích xuất Chuỗi còn lại làm đầu ra. Giá trị này phân biệt chữ hoa chữ thường, do đó, giá trị này phải được chỉ định khi nó xuất hiện trong Chuỗi thực tế
- n. Số lượng dấu phân cách – i. e. số lần tìm kiếm dấu phân cách trước khi trả về Chuỗi
Hãy hiểu điều này với sự giúp đỡ của một số ví dụ
Chúng tôi sẽ sử dụng cùng một chuỗi 'Trợ giúp kiểm tra phần mềm' làm Chuỗi đầu vào cho tất cả các ví dụ mà chúng tôi sẽ thảo luận trong phần tiếp theo bên dưới
Tìm kiếm một nhân vật
Trong khi tìm kiếm ký tự 'T', đầu ra sẽ là 'Phần mềm'. Lưu ý rằng khoảng trống thừa sau từ Phần mềm cũng sẽ được bao gồm
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;8
Tìm kiếm một ký tự xuất hiện nhiều lần. Đây, nó là – ‘e’
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;00
trong ví dụ này. vì chúng tôi đã chỉ định số lượng là 1, đầu ra sẽ là Chuỗi cho đến khi đạt được lần xuất hiện đầu tiên của 'e'
Thay đổi số đếm thành 2 cho cùng một ký tự 'e'
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;01
Bây giờ, chúng ta có thể thấy, Chuỗi con cho đến lần xuất hiện thứ hai của ký tự 'e' được trả về
Lấy một ví dụ khác để hiểu rằng CHỈ SỐ SUBSTRING có phân biệt chữ hoa chữ thường. Hãy thử với chữ 't' thay vì 'T'
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;02
Tìm kiếm một chuỗi
Chúng ta có thể sử dụng hàm SUBSTRING INDEX để tìm kiếm một chuỗi thay vì một ký tự. Hãy tìm kiếm từ 'Thử nghiệm'
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;03
Tìm kiếm một chuỗi không tồn tại
Sử dụng SUBSTRING INDEX với Chuỗi không tồn tại
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;04
Đầu ra có thể hơi bất ngờ ở đây. Nhưng vì Công cụ MySQL không thể tìm thấy kết quả khớp được yêu cầu, nên nó sẽ trả về toàn bộ chuỗi dưới dạng đầu ra
Tìm kiếm ký tự hoặc chuỗi theo thứ tự đảo ngược
Tương tự như hàm SUBSTRING, hàm SUBSTRING INDEX cũng cho phép số lượng được đề cập là số âm. Điều này có nghĩa là, thay vì duyệt từ trái sang phải, MySQL Engine sẽ cố gắng tìm kết quả khớp từ phải sang trái
Hiểu điều này với sự giúp đỡ của một số ví dụ
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;05
Trong ví dụ trên, bạn có thể thấy dấu phân cách là ‘T’ trong khi số đếm là -1. Vì vậy, đầu ra sẽ là Chuỗi con từ bên phải cho đến khi nhận được kết quả khớp đầu tiên cho chữ 'T'
Các Ứng Dụng Của Hàm SUBSTRING MySQL
Chúng tôi thường sử dụng các hàm Chuỗi MySQL trong khi truy vấn dữ liệu từ 1 hoặc nhiều bảng. Nó có thể được sử dụng để phân chia các giá trị trong một cột hoặc chỉ để hiển thị các giá trị cần thiết theo nhu cầu
Ví dụ. Giả sử rằng chúng tôi có một bảng chi tiết nhân viên bao gồm id, tên và địa chỉ
Và cột địa chỉ có định dạng – {House No},{Street Name}
Dưới đây là Script để tạo bảng và chèn dữ liệu giả.
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;06
Sử dụng hàm MySQL SUBSTRING để trích xuất số nhà từ cột địa chỉ như hình bên dưới
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;07
đầu ra
namehouse_noaddressageAkash Malhotra2222,Defense Colony24Steve Wilson12/412/4,Wilson Street28Monica Singh190190,Smith Lane32
Trong truy vấn trên, bạn có thể thấy rằng chúng tôi đã sử dụng hàm SUBSTRING_INDEX để lấy Số nhà từ cột địa chỉ và chúng tôi đã sử dụng ',' làm dấu phân cách
Tương tự như vậy, có thể có nhiều ứng dụng mà chúng tôi muốn trích xuất Chuỗi để tìm nạp một số thông tin có ý nghĩa từ Đầu vào chuỗi lớn hơn hoặc giá trị cột
Các câu hỏi thường gặp
Q #1] Hàm MySQL nào trả về vị trí xuất hiện đầu tiên của SUSTRING trong chuỗi?
Câu trả lời. MySQL cung cấp 2 hàm để trả về hoặc trích xuất một SUBSTRING từ một giá trị Chuỗi hoặc cột đã cho
- SUBSTRING
Ví dụ.
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;08
- CHỈ SỐ ĐĂNG KÝ
Ví dụ.
SELECT SUBSTR[address, 1, LENGTH[address] -4] AS substring FROM web_address;09
Q #2] SUBSTRING_INDEX trong MySQL là gì?
Câu trả lời. Hàm SUBSTRING_INDEX là một biến thể của hàm SUBSTRING. Mặc dù ở hàm SUBSTRING bình thường, bạn phải đề cập đến chỉ mục dưới dạng một số trong Chuỗi đầu vào, nhưng đối với hàm SUBSTRING_INDEX, bạn có thể đề cập đến một ký tự hoặc một chuỗi con nhỏ hơn cần tìm kiếm
Đề nghị đọc =>> Hướng dẫn MySQL COUNT
Phần kết luận
Trong hướng dẫn này, chúng ta đã tìm hiểu về các hàm SUBSTRING và SUBSTRING_INDEX của MySQL. Cả hai hàm đều trích xuất một Chuỗi con đối với chuỗi đầu vào đã cho nhưng hoạt động theo một cách hơi khác
SUBSTRING mong muốn chỉ mục là số thực, trong khi SUBSTRING_INDEX có thể có dấu phân cách được chỉ định làm giá trị Ký tự hoặc Chuỗi, sau đó Công cụ MySQL có thể trích xuất theo Chuỗi hoặc Ký tự phù hợp được yêu cầu
Cả hai hàm này phần lớn được sử dụng khi một cột có nhiều mẩu thông tin có thể được trích xuất thành các cột con bằng cách sử dụng logic trích xuất chuỗi dựa trên các yêu cầu phù hợp