MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa SOUNDEX() w MariaDB

W MariaDB, SOUNDEX() jest wbudowaną funkcją ciągu, która zwraca ciąg Soundex z podanego ciągu.

Soundex to algorytm fonetyczny służący do indeksowania nazw według dźwięku wymawianego w języku angielskim. Jeśli dwa słowa brzmią tak samo, powinny mieć ten sam ciąg Soundex. Jeśli dwa słowa brzmią podobnie, ale nie dokładnie tak samo, ich ciąg Soundex może wyglądać podobnie, ale nie dokładnie tak samo.

Funkcja przyjmuje jeden argument:ciąg, z którego ma zostać zwrócony ciąg Soundex.

Składnia

Składnia wygląda tak:

SOUNDEX(str)

Gdzie str jest ciągiem, dla którego należy zwrócić ciąg Soundex.

Przykład

Oto podstawowy przykład:

SELECT SOUNDEX('Bat');

Wynik:

+----------------+
| SOUNDEX('Bat') |
+----------------+
| B300           |
+----------------+

Oto kolejny przykład porównujący ciąg Soundex zwrócony z podobnych, ale inaczej brzmiących słów:

SELECT 
    SOUNDEX('Bat'),
    SOUNDEX('Cat'),
    SOUNDEX('Cap');

Wynik:

+----------------+----------------+----------------+
| SOUNDEX('Bat') | SOUNDEX('Cat') | SOUNDEX('Cap') |
+----------------+----------------+----------------+
| B300           | C300           | C100           |
+----------------+----------------+----------------+

A oto jeden, który porównuje słowa, które nie brzmią podobnie:

SELECT 
    SOUNDEX('Apartment'),
    SOUNDEX('Vehicle'),
    SOUNDEX('Groceries');

Wynik:

+----------------------+--------------------+----------------------+
| SOUNDEX('Apartment') | SOUNDEX('Vehicle') | SOUNDEX('Groceries') |
+----------------------+--------------------+----------------------+
| A16353               | V240               | G6262                |
+----------------------+--------------------+----------------------+

Powinienem wspomnieć, że ta funkcja implementuje oryginalny algorytm Soundex, który odrzuca samogłoski jako pierwsze, a duplikuje jako drugie. Jest to w przeciwieństwie do ulepszonej wersji, która odrzuca duplikaty jako pierwsze, a samogłoski jako drugie.

Ponadto standardowy ciąg Soundex ma długość czterech znaków, ale funkcja MariaDB SOUNDEX() funkcja zwraca dowolnie długi ciąg. Dlatego powyższe wyniki uwzględniają niestandardowe struny Soundex.

Aby zilustrować, co mam na myśli, oto wynik, który otrzymuję, używając funkcji SOUNDEX() Oracle funkcja, aby zrobić to samo:

SELECT 
    SOUNDEX('Apartment'),
    SOUNDEX('Vehicle'),
    SOUNDEX('Groceries')
FROM DUAL;

Wynik:

   SOUNDEX('APARTMENT')    SOUNDEX('VEHICLE')    SOUNDEX('GROCERIES') 
_______________________ _____________________ _______________________ 
A163                    V240                  G626                   

Dopasowania ścisłe

Oto przykład par słów, które mają pasujący ciąg Soundex, mimo że są to różne słowa o różnych znaczeniach:

SELECT 
    SOUNDEX('Dam') AS Dam, 
    SOUNDEX('Damn') AS Damn, 
    SOUNDEX('Too') AS Too, 
    SOUNDEX('Two') AS Two;

Wynik:

+------+------+------+------+
| Dam  | Damn | Too  | Two  |
+------+------+------+------+
| D500 | D500 | T000 | T000 |
+------+------+------+------+

Przykład bazy danych

Oto przykład pobierania ciągu Soundex z zapytania do bazy danych:

SELECT 
    PetName, 
    SOUNDEX(PetName)
FROM Pets;

Wynik:

+---------+------------------+
| PetName | SOUNDEX(PetName) |
+---------+------------------+
| Fluffy  | F410             |
| Fetch   | F320             |
| Scratch | S632             |
| Wag     | W200             |
| Tweet   | T000             |
| Fluffy  | F410             |
| Bark    | B620             |
| Meow    | M000             |
+---------+------------------+

Możemy również użyć SOUNDEX() w WHERE klauzula zwracająca tylko te wiersze, które brzmią jak dane słowo:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');

Wynik:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+

Możesz jednak chcieć użyć SOUNDS LIKE zamiast tego, co jest bardziej zwięzłym sposobem robienia tego samego.

Pusty ciąg

Oto, co się dzieje, gdy dla każdego podanego argumentu zostanie przekazany pusty ciąg:

SELECT SOUNDEX('');

Wynik:

+-------------+
| SOUNDEX('') |
+-------------+
|             |
+-------------+

Argumenty zerowe

Przekazywanie null zwraca null :

SELECT SOUNDEX(null);

Wynik:

+---------------+
| SOUNDEX(null) |
+---------------+
| NULL          |
+---------------+

Brakujący argument

Wywołanie SOUNDEX() z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:

SELECT SOUNDEX();

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SOUNDEX'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić MariaDB tak, aby używała wyjścia pionowego?

  2. Zrozumienie szczegółowości blokad w MySQL

  3. Funkcje numeryczne MariaDB (pełna lista)

  4. 4 sposoby sprawdzania typu danych kolumny w MariaDB

  5. Jak DAYOFWEEK() działa w MariaDB