ĐĂNG KÝ MySQL

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;
1

idaddress1www. 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à

substringexamplegooglelearnsql

Thả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

ĐĂNG KÝ 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ụ

  1. {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ý
  2. {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ụ
  3. {đế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

Substr() trong MySQL là gì?

Hàm SUBSTR() trích xuất một chuỗi con từ một chuỗi (bắt đầu từ bất kỳ vị trí nào) . Ghi chú. Các hàm SUBSTR() và MID() bằng với hàm SUBSTRING().

Các hàm Substr() Instr() là gì?

Các hàm substr cho phép bạn trích xuất một chuỗi con từ một chuỗi. Hàm instr trả về vị trí của một chuỗi con trong một chuỗi .

Sự khác biệt giữa Substr và chuỗi con trong MySQL là gì?

Tuy nhiên, có một chút khác biệt giữa các phương thức subst() và substring(). Cả hai hàm đều nhận hai tham số, nhưng substr() lấy độ dài của chuỗi con được trả về, trong khi chuỗi con lấy chỉ số kết thúc (không bao gồm) cho chuỗi con .

Làm cách nào để lấy 3 ký tự cuối cùng từ một chuỗi trong MySQL?

CHỌN *TỪ ĐẶT HÀNG TỪ yourTableName THEO QUYỀN(yourColumnName,3) yourSortingOrder ; . Đây là truy vấn để đặt hàng theo 3 ký tự cuối cùng. Trường hợp 1 - Nhận kết quả theo thứ tự tăng dần.