Hầu hết các RDBMS chính đều có chức năng cho phép chúng tôi trả về kết quả truy vấn của mình dưới dạng danh sách được phân tách bằng dấu phẩy
Nghĩa là, chúng ta có thể sử dụng một hàm như vậy để chuyển đổi từng hàng thành một mục danh sách riêng biệt, trong danh sách được phân tách bằng dấu phẩy
Dưới đây là các ví dụ về cách đạt được điều này trong một số RDBMS phổ biến hơn
mysql
MySQL có chức năng
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow6 cho phép chúng tôi xuất kết quả truy vấn của mình trong danh sách được phân tách bằng dấu phẩy
SELECT GROUP_CONCAT[PetName]
FROM Pets;
Kết quả
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
Chúng tôi cũng có thể thực hiện những việc như xóa các giá trị trùng lặp [với mệnh đề
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow7], chỉ định thứ tự cho kết quả [với mệnh đề
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow8] và chỉ định một dấu phân cách khác
Xem Hàm
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow9 trong MySQL để biết thêm ví dụ
Cơ sở dữ liệu Oracle
Cơ sở dữ liệu Oracle có chức năng
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
0SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
Kết quả
Giống như MySQL, Cơ sở dữ liệu Oracle cũng cho phép chúng tôi loại bỏ các giá trị trùng lặp, chỉ định thứ tự cho kết quả, chỉ định một dấu phân cách khác, v.v.
Xem Hàm
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
1 trong Oracle để biết thêm ví dụMáy chủ SQL
SQL Server có chức năng
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
2 để trả về kết quả của chúng tôi trong danh sách được phân tách bằng dấu phẩySELECT GROUP_CONCAT[PetName]
FROM Pets;
1Kết quả
SELECT GROUP_CONCAT[PetName]
FROM Pets;
2Chúng tôi cũng có thể xóa các giá trị trùng lặp, chỉ định thứ tự cho kết quả, thay đổi dấu phân cách, v.v.
Xem Cách trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong SQL Server để biết thêm ví dụ
MariaDB
Giống như MySQL, MariaDB cũng có hàm
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
3SELECT GROUP_CONCAT[PetName]
FROM Pets;
Kết quả
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
Giống như chức năng cùng tên của MySQL, chúng ta cũng có thể thực hiện những việc như, loại bỏ các giá trị trùng lặp [với mệnh đề
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow7], chỉ định thứ tự cho kết quả [với mệnh đề
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow8]
Tuy nhiên, một điều mà MariaDB hơn MySQL là mệnh đề
SELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
6, cung cấp cho chúng ta khả năng giới hạn số lượng kết quả trong danh sáchXem MariaDB
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow9 để biết thêm ví dụ
PostgreSQL
Postgres có
chức năngSELECT LISTAGG[last_name, ', ']
FROM employees
WHERE job_id = 'IT_PROG';
8. Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow1
Kết quả
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow
Chúng tôi cũng có thể xóa các giá trị trùng lặp [với mệnh đề
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow7], chỉ định thứ tự cho kết quả [với mệnh đề
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow8], thay đổi dấu phân cách, v.v.
Xem Hàm
Hunold, Ernst, Austin, Pataballa, Lorentz1 trong PostgreSQL để biết thêm ví dụ
SQLite
Trong SQLite, chúng ta có thể sử dụng hàm
Hunold, Ernst, Austin, Pataballa, Lorentz2 để chuyển đổi kết quả truy vấn thành danh sách được phân tách bằng dấu phẩy
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow0
Kết quả
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow1
Xem Cách thức hoạt động của
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow9 trong SQLite để biết thêm ví dụ
Nhiều cột
Các ví dụ trên đều sử dụng một cột duy nhất cho danh sách. Chúng ta cũng có thể nối nhiều cột để tạo ra một danh sách bao gồm nhiều cột
Trong hầu hết các trường hợp, việc tìm giá trị trong chuỗi được phân tách bằng dấu phẩy trở nên cần thiết. Bạn có thể thực hiện công việc tương tự với PHP hoặc bất kỳ ngôn ngữ nào khác nhưng thực hiện trực tiếp trong MySql rất dễ dàng và nhanh chóng. Trong bài viết này, bạn sẽ tìm hiểu về “Tìm giá trị trong chuỗi được phân tách bằng dấu phẩy bằng MySQL” với phần giải thích. Vì vậy, đừng rời khỏi trang này và tiếp tục đọc. Vì vậy, trước tiên hãy xác định vấn đề
Sự cố liên quan đến việc tìm giá trị trong chuỗi được phân tách bằng dấu phẩy bằng MySql
Giả sử rằng chúng ta có trường sở thích trong bảng người dùng nơi chúng ta lưu trữ sở thích của người dùng. Bây giờ chúng tôi có một hộp chọn và chúng tôi phải chọn một sở thích và chúng tôi sẽ liệt kê tất cả những người dùng đã chọn một sở thích. Nhiệm vụ này có thể được thực hiện thông qua ngôn ngữ lập trình nhưng chúng tôi sẽ thực hiện thông qua truy vấn MySql
Làm cách nào để tìm các giá trị trong chuỗi được phân tách bằng dấu phẩy bằng MySql?
Đây là một giải pháp. Như bạn biết rằng chúng tôi cần lấy các bản ghi khớp với chuỗi đã cho trong cột trường thông qua MySql, vì vậy chúng tôi sẽ sử dụng một số chức năng sẽ giải quyết vấn đề của chúng tôi. May mắn thay, có một hàm rất hay FIND_IN_SET[] có thể thực hiện công việc
Hàm FIND_IN_SET[] sẽ khớp với các giá trị được phân tách bằng dấu phẩy. Nó trả về vị trí của một giá trị chuỗi nếu nó có sẵn [dưới dạng chuỗi con] trong một chuỗi. Nó trả về 0 khi chuỗi tìm kiếm không tồn tại trong chuỗi. Cú pháp của hàm này ở đây
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow0
Ở đây chuỗi tìm kiếm là một chuỗi được tìm kiếm, ví dụ:. 'làm vườn' hoặc 'làm vườn', 'thể thao' và chuỗi chuỗi được phân tách bằng dấu phẩy là chuỗi hoặc trường được phân tách bằng dấu phẩy trong bảng MySQL. Bây giờ chúng tôi sẽ viết một số truy vấn làm ví dụ
Ví dụ truy vấn để tìm giá trị
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow1
Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow2
Ví dụ đơn giản và dễ hiểu trên sẽ giải quyết được vấn đề và yêu cầu của người dùng. Bây giờ bạn có thể thực hiện bất kỳ hành động nào mà bạn yêu cầu
Tôi hy vọng bạn hiểu rằng những gì tôi đã giải thích. Tuy nhiên, nếu bạn vẫn cần trợ giúp, vui lòng để lại nhận xét trong hộp bên dưới hoặc chỉ cần gửi tin nhắn cho tôi TẠI ĐÂY