Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj liczbę zer w liczbie całkowitej za pomocą MySQL

Możesz porównać długość ciągu zi bez znaku, który chcesz policzyć.

Rozwiązanie wykorzystujące DŁUGOŚĆ

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

Lepszym i bezpieczniejszym rozwiązaniem jest użycie CHAR_LENGTH funkcja zamiast DŁUGOŚĆ funkcjonować. Z CHAR_LENGTH funkcja umożliwia również liczenie znaków wielobajtowych (np. § ).

Rozwiązanie wykorzystujące CHAR_LENGTH

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

Możesz także rozszerzyć powyższe rozwiązanie, aby liczyć wartość ciągu za pomocą wielu znaków.

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

demonstracja na dbfiddle.uk

W MySQL możesz utworzyć funkcję aby użyć powyższej logiki w prostszy sposób:

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));

Możesz użyć tej nowej funkcji GetStringCount tak:

-- 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. MySQL - procedura składowana zwraca nieoczekiwaną wartość

  2. Baza danych nie aktualizuje się automatycznie w MySQL i Pythonie

  3. Jak wybrać ostatnie 3 minuty rekordów z MySQL za pomocą PHP

  4. Wstawianie wielu wierszy z formularza php do bazy danych

  5. Używanie UUID jako klucza podstawowego z Laravel 5