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

Nhận một mục từ một chuỗi danh sách trong MySQL

Không có chức năng gốc nào cho việc này. Bạn có thể sử dụng hai hàm SUBSTRING_INDEX. Và bạn cần kiểm tra xem mục chỉ mục cụ thể đó có tồn tại hay không:

SET @string:='1,2,3,4,5';
SET @delimiter:=',';
SET @n:=6;

SELECT
  CASE WHEN
    CHAR_LENGTH(@string)-CHAR_LENGTH(REPLACE(@string, @delimiter, ''))>=
    @n*CHAR_LENGTH(@delimiter)-1
  THEN
    SUBSTRING_INDEX(SUBSTRING_INDEX(@string, @delimiter, @n), @delimiter, -1)
  END;
  • SUBSTRING_INDEX(@string, @delimiter, @n) trả về chuỗi con từ chuỗi @string trước @n lần xuất hiện của @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) trả lại mọi thứ về bên phải của dấu phân cách cuối cùng
  • bạn cần kiểm tra xem dấu phân cách @n tồn tại. Chúng tôi có thể rút bớt độ dài của chuỗi bằng dấu phân cách và chuỗi có dấu phân cách bị xóa - bằng cách sử dụng REPLACE(@string, @delimiter, '') - và xem nó có lớn hơn @n*CHAR_LENGTH(@delimiter)-1 không


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony3 cách lưu trữ vai trò người dùng trong cơ sở dữ liệu

  2. Chọn &Chèn trên nhiều cơ sở dữ liệu với MySQL

  3. Tối ưu hóa truy vấn SQL để tránh bảng tạm thời

  4. Chuyển đổi bảng MySQL với dữ liệu được mã hóa không chính xác thành UTF-8

  5. truy cập đồng thời vào cơ sở dữ liệu MySQL bằng thủ tục được lưu trữ