sql >> Databáze >  >> RDS >> MariaDB

Jak SOUNDEX() funguje v MariaDB

V MariaDB, SOUNDEX() je vestavěná funkce řetězce, která vrací řetězec Soundex z daného řetězce.

Soundex je fonetický algoritmus pro indexování jmen podle zvuku, jak se vyslovuje v angličtině. Pokud dvě slova znějí stejně, měla by mít stejný řetězec Soundex. Pokud dvě slova znějí podobně, ale ne úplně stejně, jejich řetězec Soundex může vypadat podobně, ale ne úplně stejně.

Funkce přijímá jeden argument:řetězec, pro který má být vrácen řetězec Soundex.

Syntaxe

Syntaxe vypadá takto:

SOUNDEX(str) 

Kde str je řetězec, pro který se má vrátit řetězec Soundex.

Příklad

Zde je základní příklad:

SELECT SOUNDEX('Bat'); 

Výsledek:

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

Zde je další příklad, který porovnává řetězec Soundex vrácený z podobně, ale odlišně znějících slov:

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

Výsledek:

+----------------+----------------+------------- ----+| SOUNDEX('Bat') | SOUNDEX('Kočka') | SOUNDEX('Cap') |+----------------+----------------+-------- --------+| B300 | C300 | C100 |+----------------+----------------+------------- ---+

A tady je jeden, který porovnává slova, která neznějí stejně:

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

Výsledek:

+----------------------+--------------------+-- ---------------------+| SOUNDEX('Apartmán') | SOUNDEX('Vehicle') | SOUNDEX('Potraviny') |+----------------------+------------------- -+-----------------------+| A16353 | V240 | G6262 |+----------------------+--------------------+--- -------------------+

Měl bych zmínit, že tato funkce implementuje původní algoritmus Soundex, který nejprve zahazuje samohlásky a jako druhý duplikuje. To je v kontrastu s vylepšenou verzí, která nejprve zahodí duplikáty a jako druhé samohlásky.

Standardní řetězec Soundex má také čtyři znaky, ale MariaDB SOUNDEX() funkce vrací libovolně dlouhý řetězec. Proto výše uvedené výsledky zahrnují nestandardní struny Soundex.

Abych ilustroval, co tím myslím, zde je výsledek, který dostanu při použití SOUNDEX() společnosti Oracle funkce pro totéž:

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

Výsledek:

 SOUNDEX('APARTMENT') SOUNDEX('VEHICLE') SOUNDEX('POTRAVINY') _______________________ _______________________ _______________6 A2_4___6 A 

Přesné shody

Zde je příklad párů slov, která mají shodný řetězec Soundex, i když jde o různá slova s ​​různými významy:

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

Výsledek:

+------+------+------+------+| Přehrada | Sakra | taky | Dva |+------+------+------+------+| D500 | D500 | T000 | T000 |+------+------+------+------+

Příklad databáze

Zde je příklad získání řetězce Soundex z databázového dotazu:

SELECT 
    PetName, 
    SOUNDEX(PetName)
FROM Pets; 

Výsledek:

+---------+------------------+| Jméno mazlíčka | SOUNDEX(jméno mazlíčka) |+---------+------------------+| Načechraný | F410 || Načíst | F320 || Škrábnout | S632 || Wag | W200 || Tweet | T000 || Načechraný | F410 || Kůra | B620 || Mňau | M000 |+---------+------------------+

Můžeme také použít SOUNDEX() v WHERE klauzule pro vrácení pouze těch řádků, které znějí jako dané slovo:

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

Výsledek:

+---------+-----------------+----------------- +| Jméno mazlíčka | SOUNDEX(jméno domácího mazlíčka) | SOUNDEX('Wagg') |+---------+------------------+------------- ----+| Wag | W200 | W200 |+---------+------------------+-----------------+ 

Můžete však raději použít SOUNDS LIKE místo toho, což je stručnější způsob, jak udělat totéž.

Prázdný řetězec

Co se stane, když je pro každý daný argument předán prázdný řetězec:

SELECT SOUNDEX(''); 

Výsledek:

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

Nulové argumenty

Předávání null vrátí null :

SELECT SOUNDEX(null); 

Výsledek:

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

Chybí argument

Volání SOUNDEX() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT SOUNDEX(); 

Výsledek:

CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'SOUNDEX'

  1. Výukový program MySQL:Příkaz MySQL IN (pokročilý)

  2. Přidání cizího klíče do modelu kolejnic

  3. Vracet pouze číselné hodnoty v MySQL

  4. Změna jazyka systému a chybových zpráv v PostgreSQL