Computer >> Máy Tính >  >> Lập trình >> MySQL

Đếm giá trị từ trường được phân tách bằng dấu phẩy trong MySQL?


Bạn có thể đếm các giá trị từ trường được phân tách bằng dấu phẩy bằng phương thức CHAR_LENGTH () từ MySQL. Cú pháp như sau -

SELECT *, (CHAR_LENGTH(yourColumnName) - CHAR_LENGTH(REPLACE(yourColumnName, ',','')) + 1) as anyVariableName from yourTableName;

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table CountValuesCommaSeparated
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> CommaSeparatedValue text,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (1.76 sec)

Chèn một số bản ghi trong bảng bằng lệnh insert. Truy vấn như sau -

mysql> insert into CountValuesCommaSeparated(CommaSeparatedValue)
values('101,104,1900,46675,7895');
Query OK, 1 row affected (0.16 sec)

mysql> insert into CountValuesCommaSeparated(CommaSeparatedValue)
values('1010,18949,37465');
Query OK, 1 row affected (0.21 sec)

mysql> insert into CountValuesCommaSeparated(CommaSeparatedValue)
values('2010,1201,2743874,7485');
Query OK, 1 row affected (0.42 sec)

mysql> insert into CountValuesCommaSeparated(CommaSeparatedValue)
values('4757,457587,48586,378575,3874765,487565');
Query OK, 1 row affected (0.26 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 select. Truy vấn như sau -

mysql> select *from CountValuesCommaSeparated;

Sau đây là kết quả -

+----+-----------------------------------------+
| Id | CommaSeparatedValue                     |
+----+-----------------------------------------+
| 1  | 101,104,1900,46675,7895                 |
| 2  | 1010,18949,37465                        |
| 3  | 2010,1201,2743874,7485                  |
| 4  | 4757,457587,48586,378575,3874765,487565 |
+----+-----------------------------------------+
4 rows in set (0.00 sec)

Đây là truy vấn để đếm giá trị từ các trường được phân tách bằng dấu phẩy:

mysql> select *,
   -> (CHAR_LENGTH(CommaSeparatedValue) -
CHAR_LENGTH(REPLACE(CommaSeparatedValue, ',', '')) + 1) as TotalValue
   -> from CountValuesCommaSeparated;

Sau đây là kết quả -

+----+-----------------------------------------+------------+
| Id | CommaSeparatedValue                     | TotalValue |
+----+-----------------------------------------+------------+
|  1 | 101,104,1900,46675,7895                 |          5 |
|  2 | 1010,18949,37465                        |          3 |
|  3 | 2010,1201,2743874,7485                  |          4 |
|  4 | 4757,457587,48586,378575,3874765,487565 |          6 |
+----+-----------------------------------------+------------+
4 rows in set (0.00 sec)