Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tách một chuỗi trong MySQL

Vấn đề:

Bạn muốn tách một chuỗi trong MySQL.

Ví dụ:

Cơ sở dữ liệu của chúng tôi có một bảng có tên là Student với dữ liệu trong các cột idname .

id tên
1 Ann Smith
2 Mark Twain
3 Brad Green

Hãy tìm nạp dữ liệu từ tên cột và chia nó thành firstnamelastname .

Giải pháp:

Chúng tôi sẽ sử dụng SUBSTRING_INDEX() hàm số. Đây là truy vấn:

SELECT
SUBSTRING_INDEX(name,' ',1) AS firstname,
SUBSTRING_INDEX(name,' ',-1) AS lastname
FROM Student

Đây là kết quả của truy vấn:

tên đầu tiên họ
Ann Smith
Đánh dấu Twain
Brad Màu xanh lá cây

Thảo luận:

Hàm SUBSTRING_INDEX() nhận 3 đối số:chuỗi nguồn, dấu phân cách và số lần xuất hiện của dấu phân cách.

Chuỗi nguồn là chuỗi mà chúng tôi muốn tách.

Dấu phân cách là một chuỗi ký tự SUBSTRING_INDEX() hàm tìm kiếm trong chuỗi nguồn. Khi được tìm thấy, nó chỉ ra nơi kết thúc chuỗi con. Dấu phân cách có thể là một ký tự đơn lẻ chẳng hạn như khoảng trắng, nhưng nó cũng có thể là một mẫu bao gồm hai hoặc nhiều ký tự. Mẫu này phân biệt chữ hoa chữ thường; nghĩa là, vấn đề quan trọng là các ký tự đã cho là chữ hoa hay chữ thường. Hãy nhớ rằng dấu phân tách là một chuỗi, vì vậy nó phải được viết trong dấu ngoặc kép (‘’).

Đối số cuối cùng là số lần xuất hiện . Nó cho biết số lần mẫu dấu phân cách cần được khớp. Lưu ý rằng số lần xuất hiện có thể là một giá trị âm. Khi nó âm, chúng tôi đếm số lần xuất hiện của dấu phân cách từ bên phải. Khi số đếm là một số dương, chúng tôi đếm từ bên trái.

Hàm xuất ra mọi ký tự của chuỗi nguồn cho đến khi dấu phân cách được khớp với số lần được cho bởi số lần xuất hiện.

Nếu chúng tôi chạy truy vấn sau:

SELECT
SUBSTRING_INDEX('Ann Smith',' ',1);

đầu ra sẽ là:

Ann

Như bạn có thể thấy, hàm trả về tất cả các ký tự cho đến khi tìm thấy khoảng trống đầu tiên từ bên trái.

Trong ví dụ của chúng tôi, chúng tôi truy xuất dưới dạng tên của học sinh tất cả các ký tự có khoảng cách đầu tiên từ bên trái và dưới dạng họ của học sinh tất cả các ký tự tính đến khoảng trắng đầu tiên từ bên phải.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hiển thị đối chiếu của cơ sở dữ liệu trong MySQL

  2. Cách xem các kết nối hiện tại trong MySQL Workbench bằng GUI

  3. Cách sử dụng động nhiều cơ sở dữ liệu cho một mô hình trong CakePHP

  4. Điền JFreechart TimeSeriesCollection từ Mysql DB?

  5. JSON_MERGE_PATCH () so với JSON_MERGE_PRESERVE () trong MySQL:Sự khác biệt là gì?