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

Nhận số lượng số không trong một số nguyên bằng MySQL

Bạn có thể so sánh độ dài chuỗi có và không có ký tự bạn muốn đếm.

Giải pháp sử dụng LENGTH

-- 0 in 10090: 3
-- 0 in 10000: 4
SELECT 
   (LENGTH(number) - LENGTH(REPLACE(number, '0', ''))) AS char_count
FROM dual;

Giải pháp tốt hơn và an toàn hơn là sử dụng CHAR_LENGTH thay vì hàm LENGTH hàm số. Với CHAR_LENGTH bạn cũng có thể đếm các ký tự nhiều byte (như § ).

Giải pháp sử dụng CHAR_LENGTH

-- § in 100§0: 1
SELECT 
    (CHAR_LENGTH(number) - CHAR_LENGTH(REPLACE(number, '§', ''))) AS char_count
FROM dual;

Bạn cũng có thể mở rộng giải pháp trên để đếm giá trị chuỗi sử dụng nhiều ký tự.

-- 12 in 10120012: 2
SELECT number,
  FLOOR((CHAR_LENGTH(number) - CHAR_LENGTH(REPLACE(number, '12', ''))) / CHAR_LENGTH('12')) AS str_count
FROM dual;

bản trình diễn trên dbfiddle.uk

Trên MySQL, bạn có thể tạo một hàm để sử dụng logic trên theo cách đơn giản hơn:

CREATE FUNCTION GetStringCount(strValue VARCHAR(255), strSearchValue VARCHAR(255))
RETURNS INT DETERMINISTIC NO SQL
RETURN FLOOR((CHAR_LENGTH(strValue) - CHAR_LENGTH(REPLACE(strValue, strSearchValue, ''))) / CHAR_LENGTH(strSearchValue));

Bạn có thể sử dụng chức năng mới này GetStringCount như thế này:

-- example to count non-multi-byte character (here 0).
-- 0 in 10090: 3
-- 0 in 10000: 4
SELECT number, GetStringCount(number, '0') AS strCount
FROM dual;

-- example to count multi-byte character (here §).
-- § in 100§0: 1
SELECT number, GetStringCount(number, '§') AS strCount
FROM dual;

-- example to count a string with multiple characters.
-- 12 in 10120012: 2
SELECT number, GetStringCount(number, '12') AS strCount
FROM dual;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng strtotime cho các ngày trước năm 1970

  2. Đối chiếu thay đổi MySQL của tất cả các bảng

  3. Cách xử lý múi giờ MySQL trong script

  4. Thiết kế bảng thực thể-thuộc tính-giá trị

  5. Làm cách nào để xác định kích thước giao dịch tối đa trong MySQL?