sql >> Databáze >  >> RDS >> Oracle

Funkce SOUNDEX() v Oracle

V Oracle, SOUNDEX() Funkce vrací řetězec znaků obsahující fonetickou reprezentaci jejího argumentu. Toto je známé jako řetězec Soundex.

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(char) 

Kde char je řetězec, ze kterého se má vrátit řetězec Soundex. Může to být jakýkoli datový typ CHAR , VARCHAR2 , NCHAR nebo NVARCHAR2 . Vrácená hodnota je stejného datového typu jako argument.

Příklad

Zde je základní příklad:

SELECT SOUNDEX('Bat')
FROM DUAL; 

Výsledek:

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')
FROM DUAL; 

Výsledek:

 SOUNDEX('BAT') SOUNDEX('CAT') SOUNDEX('CAP') _________________ _________________ _________________ B300 C300 C100 

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

SELECT 
    SOUNDEX('Ponzi'),
    SOUNDEX('Bracket'),
    SOUNDEX('Heavy')
FROM DUAL; 

Výsledek:

 SOUNDEX('PONZI') SOUNDEX('BRACKET') SOUNDEX('HEAVY') ___________________ ______________________ _______________0____________________________ HPř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
FROM DUAL; 

Výsledek:

 SAKRAT TAK 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 
    country_name, 
    SOUNDEX(country_name)
FROM countries
FETCH FIRST 10 ROWS ONLY; 

Výsledek:

 COUNTRY_NAME SOUNDEX(COUNTRY_NAME) _______________ ________________________ Argentina A625 Austrálie A236 Belgie B425 Brazílie B624 Kanada C530 Švýcarsko S326 Čína C500 Německo C500 Německo G16 Egypt 

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

SELECT
    employee_id,
    first_name,
    last_name
FROM employees
WHERE SOUNDEX(first_name) = SOUNDEX('Stephen'); 

Výsledek:

 EMPLOYEE_ID FIRST_NAME LAST_NAME ______________ _____________ ____________ 100 Steven King 128 Steven Markle 138 Stephen Stiles 

Prázdný řetězec

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

SET NULL 'null';
SELECT SOUNDEX('')
FROM DUAL; 

Výsledek:

null

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Nulový argument

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

SELECT SOUNDEX(null)
FROM DUAL; 

Výsledek:

null

Chybí argument

Volání SOUNDEX() bez předání jakýchkoli argumentů dojde k chybě:

SELECT SOUNDEX()
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT SOUNDEX()FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce:

A předání příliš mnoha argumentů také vede k chybě:

SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT SOUNDEX('Bože', 'Dang')FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce:

  1. Pár rychlých věcí ke zpětné vazbě PASS

  2. ERROR 1396 (HY000):Operace CREATE USER selhala pro 'jack'@'localhost'

  3. Jak získat hodnoty SQLite db v Arraylist do Listview

  4. Export a import všech databází MySQL najednou