Hướng dẫn split string by character mysql - tách chuỗi theo ký tự mysql

Tìm hiểu cách phân chia các giá trị chuỗi trong MySQL với sự trợ giúp của hàm Subring_index

Để phân chia một chuỗi trong MySQL, bạn cần sử dụng chức năng

9058 Goldfield Avenue\n Yonkers, NY 10701
5 do MySQL cung cấp.

Hàm

9058 Goldfield Avenue\n Yonkers, NY 10701
6 cho phép bạn trích xuất một phần của chuỗi hoàn chỉnh.

Cú pháp của hàm như sau:

SUBSTRING_INDEX(expression, delimiter, count);

Hàm yêu cầu bạn vượt qua 3 tham số như mô tả dưới đây:

  • Tham số đầu tiên sẽ là nguồn chuỗi để hoạt động. Bạn có thể truyền một biểu thức hoặc một tên cột
  • Tham số thứ hai sẽ là dấu phân cách cho biết hàm dừng trích xuất ở đâudelimiter that tells the function where to stop the extraction
  • Tham số thứ ba sẽ là số lần xuất hiện của dấu phân cách. Bạn có thể vượt qua một số tích cực hoặc âmoccurrence count of the delimiter. You can pass a positive or negative number

Hãy cùng xem một ví dụ về

9058 Goldfield Avenue\n Yonkers, NY 10701
6 trong hành động.

Giả sử bạn có một chuỗi địa chỉ như sau:

9058 Goldfield Avenue\n Yonkers, NY 10701

Hãy nói rằng bạn muốn phân chia địa chỉ ở trên dựa trên sự xuất hiện của biểu tượng dòng

9058 Goldfield Avenue\n Yonkers, NY 10701
8.

Ở đây, cách bạn làm điều đó với chức năng

9058 Goldfield Avenue\n Yonkers, NY 10701
6:

SELECT 
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', 1) 
    AS address_one,
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', -1) 
    AS address_two;

Truy vấn ở trên sẽ trả về tập kết quả sau:

+-----------------------+--------------------+
| address_one           | address_two        |
+-----------------------+--------------------+
| 9058 Goldfield Avenue |  Yonkers, NY 10701 |
+-----------------------+--------------------+

Hàm

9058 Goldfield Avenue\n Yonkers, NY 10701
6 quét nguồn chuỗi cho chuỗi phân cách, sau đó trích xuất chuỗi dựa trên số lượng xuất hiện của dấu phân cách mà bạn đã truyền dưới dạng tham số thứ ba.

Khi bạn vượt qua một số âm, thì hàm sẽ đi qua chuỗi từ cuối thay vì từ đầu chuỗi.

Hãy cùng xem một ví dụ khác với dữ liệu bảng MySQL. Giả sử bạn có bảng

SELECT 
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', 1) 
    AS address_one,
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', -1) 
    AS address_two;
1 với dữ liệu sau:

+----+---------------+
| id | name          |
+----+---------------+
|  1 | Mark Crane    |
|  2 | Natalia Smith |
|  3 | Gary Anderson |
+----+---------------+

Bạn có thể phân chia các chuỗi trong cột

SELECT 
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', 1) 
    AS address_one,
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', -1) 
    AS address_two;
2 ở trên là
SELECT 
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', 1) 
    AS address_one,
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', -1) 
    AS address_two;
3 và
SELECT 
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', 1) 
    AS address_one,
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', -1) 
    AS address_two;
4 bằng cách sử dụng hàm
9058 Goldfield Avenue\n Yonkers, NY 10701
5 như sau:

SELECT
  SUBSTRING_INDEX(name,' ', 1) AS first_name, 
  SUBSTRING_INDEX(name,' ', -1) AS last_name 
  FROM students;

Truy vấn SQL ở trên sẽ trả về tập kết quả sau:

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Mark       | Crane     |
| Natalia    | Smith     |
| Gary       | Anderson  |
+------------+-----------+

Hàm

9058 Goldfield Avenue\n Yonkers, NY 10701
6 có thể được gọi là tham số đầu tiên của một cuộc gọi
9058 Goldfield Avenue\n Yonkers, NY 10701
6 khác để bạn có thể trích xuất một phần của chuỗi mà ở giữa các dấu phân cách.

Giả sử học sinh của bạn có tên đệm như sau:

+----+----------------------+
| id | name                 |
+----+----------------------+
|  1 | Mark Argus Crane     |
|  2 | Natalia Steven Smith |
|  3 | Gary Poul Anderson   |
+----+----------------------+

Lúc đầu, dường như gọi

9058 Goldfield Avenue\n Yonkers, NY 10701
6 và vượt qua số
SELECT 
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', 1) 
    AS address_one,
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', -1) 
    AS address_two;
9 là tham số thứ ba có thể hoạt động.

Nhưng vượt qua số

SELECT 
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', 1) 
    AS address_one,
  SUBSTRING_INDEX("9058 Goldfield Avenue\n Yonkers, NY 10701", '\n', -1) 
    AS address_two;
9 sẽ khiến hàm trích xuất cả tên đầu tiên và tên đệm như hình dưới đây:

mysql> SELECT SUBSTRING_INDEX(name,' ', 2) as middle_name FROM students; 
+----------------+
| middle_name    |
+----------------+
| Mark Argus     |
| Natalia Steven |
| Gary Poul      |
+----------------+

Để chỉ trích xuất tên đệm, bạn cần gọi hàm

9058 Goldfield Avenue\n Yonkers, NY 10701
5 hai lần, với cuộc gọi thứ hai là tham số đầu tiên của hàm.

Cuộc gọi hàm bên trong phải giống như trên, trong khi cuộc gọi bên ngoài sẽ trích xuất chuỗi bằng cách sử dụng

+-----------------------+--------------------+
| address_one           | address_two        |
+-----------------------+--------------------+
| 9058 Goldfield Avenue |  Yonkers, NY 10701 |
+-----------------------+--------------------+
2 làm tham số thứ ba:

SELECT
  SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1) AS middle_name
  FROM students;

Bây giờ tên đệm phải được trích xuất chính xác như hình dưới đây:

9058 Goldfield Avenue\n Yonkers, NY 10701
0

Truy vấn SQL hoàn chỉnh dưới đây:

9058 Goldfield Avenue\n Yonkers, NY 10701
1

Sẽ tạo ra kết quả sau:

9058 Goldfield Avenue\n Yonkers, NY 10701
2

Bây giờ bạn đã học cách sử dụng chức năng

9058 Goldfield Avenue\n Yonkers, NY 10701
5 để phân chia một chuỗi.

Hãy cùng xem xét cách sử dụng một quy trình được lưu trữ để chia một chuỗi theo một dấu phân cách cụ thể tiếp theo.

Chuỗi phân chia MySQL với quy trình được lưu trữ

Bạn cũng có thể chia một chuỗi trong MySQL bằng cách sử dụng quy trình được lưu trữ.

Bạn cần tạo quy trình sau trong cơ sở dữ liệu của mình:

9058 Goldfield Avenue\n Yonkers, NY 10701
3

Quy trình

+-----------------------+--------------------+
| address_one           | address_two        |
+-----------------------+--------------------+
| 9058 Goldfield Avenue |  Yonkers, NY 10701 |
+-----------------------+--------------------+
4 ở trên chấp nhận hai đối số:

  • +-----------------------+--------------------+
    | address_one           | address_two        |
    +-----------------------+--------------------+
    | 9058 Goldfield Avenue |  Yonkers, NY 10701 |
    +-----------------------+--------------------+
    
    5 để chuỗi phân tách
  • +-----------------------+--------------------+
    | address_one           | address_two        |
    +-----------------------+--------------------+
    | 9058 Goldfield Avenue |  Yonkers, NY 10701 |
    +-----------------------+--------------------+
    
    6 cho dấu phân cách chuỗi

Đầu tiên, quy trình sẽ tạo một bảng tạm thời để lưu trữ từng phần của chuỗi cho đến khi vị trí phân cách.

Sau đó, một vòng

+-----------------------+--------------------+
| address_one           | address_two        |
+-----------------------+--------------------+
| 9058 Goldfield Avenue |  Yonkers, NY 10701 |
+-----------------------+--------------------+
7 sẽ được thực thi miễn là
+-----------------------+--------------------+
| address_one           | address_two        |
+-----------------------+--------------------+
| 9058 Goldfield Avenue |  Yonkers, NY 10701 |
+-----------------------+--------------------+
6 được tìm thấy trong
+-----------------------+--------------------+
| address_one           | address_two        |
+-----------------------+--------------------+
| 9058 Goldfield Avenue |  Yonkers, NY 10701 |
+-----------------------+--------------------+
5.

Vòng lặp sẽ thêm các mảnh của chuỗi vào bảng

+----+---------------+
| id | name          |
+----+---------------+
|  1 | Mark Crane    |
|  2 | Natalia Smith |
|  3 | Gary Anderson |
+----+---------------+
0.

Khi tất cả các phần chuỗi được thêm vào bảng, truy vấn

+----+---------------+
| id | name          |
+----+---------------+
|  1 | Mark Crane    |
|  2 | Natalia Smith |
|  3 | Gary Anderson |
+----+---------------+
1 sẽ truy xuất các hàng cho chuỗi.

Dưới đây là một số kết quả của việc chạy thủ tục được lưu trữ:

9058 Goldfield Avenue\n Yonkers, NY 10701
4

Và đó là cách mà bạn có thể chia một chuỗi bằng quy trình lưu trữ MySQL.

Nếu bạn đang phát triển một dự án ứng dụng web, thì tốt hơn hết là để ngôn ngữ lập trình xử lý phần phụ trợ của ứng dụng của bạn để phân chia chuỗi thay vì sử dụng các truy vấn MySQL.

Ví dụ: JavaScript có phương thức

+----+---------------+
| id | name          |
+----+---------------+
|  1 | Mark Crane    |
|  2 | Natalia Smith |
|  3 | Gary Anderson |
+----+---------------+
2 cho phép bạn chia
+----+---------------+
| id | name          |
+----+---------------+
|  1 | Mark Crane    |
|  2 | Natalia Smith |
|  3 | Gary Anderson |
+----+---------------+
3 thành
+----+---------------+
| id | name          |
+----+---------------+
|  1 | Mark Crane    |
|  2 | Natalia Smith |
|  3 | Gary Anderson |
+----+---------------+
4:

Công thức mã JavaScript: Chia chuỗi thành mảng

Các ngôn ngữ như JavaScript và PHP có nhiều chức năng có thể giúp bạn thao tác các giá trị chuỗi với độ chính xác hơn.

Nhưng nếu bạn phải làm điều đó từ MySQL, thì chức năng

9058 Goldfield Avenue\n Yonkers, NY 10701
6 sẽ là người bạn tốt nhất của bạn.

Find_in_set trong mysql là gì?

Hàm find_in_set () trả về vị trí của một chuỗi trong danh sách các chuỗi.returns the position of a string within a list of strings.

Chúng ta có thể sử dụng chất nền trong mysql không?

Hàm con () trong hàm mysql trong mysql được sử dụng để lấy chuỗi con từ bất kỳ chuỗi nào.Nó trích xuất một chuỗi có độ dài được chỉ định, bắt đầu từ một vị trí đã cho trong một chuỗi đầu vào.Mục đích của chuỗi con là trả về một phần cụ thể của chuỗi.function in MySQL is used to derive substring from any given string . It extracts a string with a specified length, starting from a given location in an input string. The purpose of substring is to return a specific portion of the string.

Trim MySQL là gì?

Chức năng Trim () trong MySQL được sử dụng để làm sạch dữ liệu.Nó cũng được sử dụng để loại bỏ các ký tự dẫn và dấu dẫn không mong muốn trong một chuỗi.

Làm thế nào phân tách dấu phẩy tách các giá trị trong truy vấn SQL?

Chia chuỗi giá trị phân tách dấu phẩy trong một cột.Chọn ProductID, Tên, Giá trị từ sản phẩm Cross áp dụng String_Split (Tags, ',');Đây là tập kết quả.Thứ tự của đầu ra có thể thay đổi theo thứ tự không được đảm bảo để phù hợp với thứ tự của các chuỗi con trong chuỗi đầu vào.SELECT ProductId, Name, value FROM Product CROSS APPLY STRING_SPLIT(Tags, ','); Here is the result set. The order of the output may vary as the order is not guaranteed to match the order of the substrings in the input string.