Hướng dẫn mysql in string comma separated - mysql trong chuỗi được phân tách bằng dấu phẩy

Điều này sẽ hoạt động chắc chắn, và tôi thực sự đã thử nó:

lwdba@localhost [DB test] :: DROP TABLE IF EXISTS shirts;
Query OK, 0 rows affected [0.08 sec]

lwdba@localhost [DB test] :: CREATE TABLE shirts
    -> [
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ticketnumber INT, -> colors VARCHAR[30] -> ];
Query OK, 0 rows affected [0.19 sec] lwdba@localhost [DB test] :: INSERT INTO shirts [ticketnumber,colors] VALUES -> [32423,'1,2,5,12,15'], -> [32424,'1,5,12,15,30'], -> [32425,'2,5,11,15,28'], -> [32426,'1,2,7,12,15'], -> [32427,'2,4,8,12,15']; Query OK, 5 rows affected [0.06 sec] Records: 5 Duplicates: 0 Warnings: 0 lwdba@localhost [DB test] :: SELECT * FROM shirts WHERE LOCATE[CONCAT[',', 1 ,','],CONCAT[',',colors,',']] > 0; +----+--------------+--------------+ | id | ticketnumber | colors | +----+--------------+--------------+ | 1 | 32423 | 1,2,5,12,15 | | 2 | 32424 | 1,5,12,15,30 | | 4 | 32426 | 1,2,7,12,15 | +----+--------------+--------------+ 3 rows in set [0.00 sec]

Hãy thử một lần !!!

Đặt chuỗi được phân tách bằng dấu phẩy trong in [] như trong cú pháp dưới đây:

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];

Trước tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]

Chèn một số bản ghi trong bảng bằng lệnh chèn -

mysql> insert into DemoTable1314 values['45,67,89'];
Query OK, 1 row affected [0.13 sec]
mysql> insert into DemoTable1314 values['10,20,50'];
Query OK, 1 row affected [0.10 sec]
mysql> insert into DemoTable1314 values['90,56,45'];
Query OK, 1 row affected [0.23 sec]

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh chọn -

mysql> select *from DemoTable1314;

Đầu ra

+----------+
| Number   |
+----------+
| 45,67,89 |
| 10,20,50 |
| 90,56,45 |
+----------+
3 rows in set [0.00 sec]

Sau đây là truy vấn để sử dụng chuỗi được phân tách bằng dấu phẩy trong mysql `in []`:

mysql> select *from DemoTable1314 where Number IN['10,20,50'];

Đầu ra

+----------+
| Number   |
+----------+
| 10,20,50 |
+----------+
1 row in set [0.02 sec]

Sau đây là truy vấn để sử dụng chuỗi được phân tách bằng dấu phẩy trong mysql `in []`:

  • Cập nhật vào ngày 04 tháng 11 năm 2019 10:46:30
  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào để tổng hợp một chuỗi phân tách bằng dấu phẩy [chuỗi có số] trong MySQL?
  • Làm thế nào để chuyển đổi một chuỗi phân tách bằng dấu phẩy thành một danh sách mảng trong java?
  • Xóa từ cụ thể trong chuỗi phân tách bằng dấu phẩy bằng MySQL
  • Chuyển đổi danh sách chuỗi thành chuỗi phân tách bằng dấu phẩy trong Java
  • Chuyển đổi một bộ chuỗi thành chuỗi phân tách bằng dấu phẩy trong Java
  • Regex để tìm chuỗi và ký tự tiếp theo trong danh sách phân tách dấu phẩy - MySQL?
  • Làm thế nào để tạo một chuỗi phân tách bằng dấu phẩy từ danh sách chuỗi trong C#?
  • Làm thế nào để đặt một danh sách phân tách dấu phẩy làm bảng trong MySQL?
  • Tìm kiếm từ một dấu phẩy phân tách cột MySQL?
  • Làm thế nào để bao gồm các trích dẫn trong cột phân tách bằng dấu phẩy với MySQL?
  • Làm thế nào để chia các giá trị phân tách dấu phẩy trong một vectơ r?
  • Chuyển đổi chuỗi phân tách bằng dấu phẩy thành các mảng tách trong một đối tượng javascript
  • Chuyển đổi chuỗi thành danh sách phân tách bằng dấu phẩy trong Java
  • Đếm các giá trị từ trường được phân tách bằng dấu phẩy trong MySQL?

Chia các giá trị phân tách dấu phẩy và lấy một giá trị ở vị trí nhất định

Đáng ngạc nhiên là MySQL không có chức năng dành riêng cho các hoạt động này trái ngược với Split_Part trong PostgreSQL. May mắn thay, nó có chức năng Subring_index [] mà gần như những gì chúng ta cần.

Từ tài liệu chính thức:

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
8

Trả về chuỗi con từ String Str trước khi tính toán của DELIM DELIMITER. Nếu số lượng là tích cực, mọi thứ ở bên trái của dấu phân cách cuối cùng [đếm từ bên trái] được trả về. Nếu số lượng là âm, mọi thứ ở bên phải của dấu phân cách cuối cùng [đếm từ bên phải] được trả về.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
9 thực hiện một trận đấu nhạy cảm trường hợp khi tìm kiếm Delim.

mysql> SELECT SUBSTRING_INDEX['www.mysql.com', '.', 2];
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX['www.mysql.com', '.', -2];
        -> 'mysql.com'

Chức năng này là multibyte an toàn.

Định nghĩa

CREATE TABLE employees [
   id SERIAL,
   name VARCHAR[255],
   address TEXT,
   PRIMARY KEY [id]
];

INSERT INTO employees [id, name, address] VALUES 
[1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'],
[2, 'Bob Smith', '234 Main Street,,Erie,PA,16512'];

Dung dịch

Giả sử chúng tôi muốn tìm tất cả nhân viên làm việc ở một trạng thái nhất định [ví dụ:

mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]
0] là trường thứ tư trong một địa chỉ giữ cột dưới dạng các giá trị được phân tách bằng dấu phẩy.

Với chức năng

mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]
1, chúng tôi sẽ có thể trích xuất mọi thứ lên đến cột thứ tư chứa trạng thái

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
0

Bây giờ chúng ta biết rằng trạng thái sẽ luôn là trường cuối cùng trong giá trị kết quả. Vì hàm

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
9 cho phép sử dụng các giá trị âm để trích xuất các trường đếm từ bên phải, chúng tôi sẽ sử dụng khả năng này để trích xuất trường ngoài cùng có chứa chữ viết tắt trạng thái.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
1

Giải pháp cuối cùng để tất cả nhân viên làm việc ở một tiểu bang nhất định được hiển thị dưới đây.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
2

Hãy cẩn thận

Một điều cần lưu ý về

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
9 là hàm trả về toàn bộ chuỗi nếu trường được yêu cầu không tồn tại.

Ví dụ,

mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]
4 trả về địa chỉ đầy đủ.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
3

Sau đó, cố gắng trích xuất trường thứ sáu với

mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]
5 sẽ cung cấp cho chúng tôi mã zip [trường thứ năm] sai.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
4

Một cách giải quyết có thể xảy ra với vấn đề này là kiểm tra xem số lượng trường lớn hơn hoặc bằng với chỉ mục được yêu cầu và sau đó mã trên hoặc trả về chuỗi trống, nếu chỉ mục trường không hợp lệ.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
5

Có thể sử dụng

Trong hầu hết các trường hợp, tốt hơn là sử dụng một bảng tra cứu riêng biệt hoặc một cột cho mỗi trường thay vì lưu trữ dữ liệu dưới dạng các giá trị được phân tách bằng dấu phẩy để tra cứu sau này.

Tuy nhiên, có thể có những trường hợp hiếm hoi trong đó thủ thuật trên có thể hữu ích. Ví dụ, gần đây tôi cần trả về danh sách các giá trị từ hàm do người dùng xác định và cách duy nhất để làm điều đó là trả về một chuỗi chứa các giá trị được phân tách bằng dấu phẩy. Cuối cùng tôi đã sử dụng

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
9 để đặt hàng kết quả theo một trong các trường.

Tìm kiếm trong một cột chứa các giá trị được phân tách bằng dấu phẩy

MySQL có chức năng chuyên dụng find_in_set [] trả về chỉ mục trường nếu giá trị được tìm thấy trong một chuỗi chứa các giá trị được phân tách bằng dấu phẩy.

Ví dụ: câu lệnh sau trả về chỉ mục giá trị một dựa trên

mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]
7 trong chuỗi
mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]
8.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
6

Nếu giá trị đã cho không được tìm thấy, hàm

mysql> create table DemoTable1314
-> [
-> Number varchar[100]
-> ];
Query OK, 0 rows affected [0.53 sec]
9 trả về
mysql> insert into DemoTable1314 values['45,67,89'];
Query OK, 1 row affected [0.13 sec]
mysql> insert into DemoTable1314 values['10,20,50'];
Query OK, 1 row affected [0.10 sec]
mysql> insert into DemoTable1314 values['90,56,45'];
Query OK, 1 row affected [0.23 sec]
0.

select *from yourTableName where yourColumnName IN['yourCommaSeparatedValue'];
7

Làm cách nào để phân tách các giá trị phân tách dấu phẩy trong MySQL?

Cách chia văn bản phân tách dấu phẩy [danh sách ID] trong quy trình lưu trữ MySQL để sử dụng kết quả trong câu lệnh SQL "in".Chọn * từ bảng trong đó bảng.id in [splitStringFunction [CommaseParatedData, ',']];SQL.SELECT * FROM table WHERE table.id IN [splitStringFunction[commaSeparatedData, ',']]; sql.

Làm cách nào để chia một chuỗi phân tách dấu phẩy thành nhiều hàng trong MySQL?

chuỗi phân chia-into-rows.sql-- chia một chuỗi được phân tách bằng dấu phẩy [còn gọi là "set"], $ strlist và trả về phần tử [AKA Subring] khớp với chỉ mục được cung cấp, $ i.sql -- Splits a comma-separated string [AKA "SET"], $strlist, and returns the element [aka substring] matching the provided index, $i.

Làm cách nào để chia một chuỗi trong mysql?

Trong MySQL, chúng tôi sử dụng Subring_index [] để phân chia chuỗi.Nó thường bao gồm ba đối số, tức là, chuỗi, phân định và vị trí.Giá trị chuỗi sẽ được chia dựa trên vị trí.use SUBSTRING_INDEX[] to split the string. It usually consists of three arguments i.e., string, delimiter, and position. The string value will be split based on the position.

Làm thế nào tôi có thể nhận được nhiều giá trị hàng trong dấu phẩy được phân tách trong MySQL?

Làm thế nào tôi có thể nhận được nhiều giá trị hàng trong dấu phẩy được phân tách trong MySQL?Mysql.MySQL có chức năng Group_concat [] cho phép chúng tôi xuất kết quả truy vấn của mình trong danh sách phân tách dấu phẩy: chọn nhóm_concat [petName] từ vật nuôi;Cơ sở dữ liệu Oracle.GROUP_CONCAT[] function that allows us to output our query results in a comma separated list: SELECT GROUP_CONCAT[PetName] FROM Pets; Oracle Database.

Chủ Đề