In Oracle, il SOUNDEX() La funzione restituisce una stringa di caratteri contenente la rappresentazione fonetica del suo argomento. Questa è conosciuta come la stringa Soundex.
Soundex è un algoritmo fonetico per l'indicizzazione dei nomi in base al suono, pronunciato in inglese. Se due parole suonano allo stesso modo, dovrebbero avere la stessa stringa Soundex. Se due parole suonano simili, ma non esattamente uguali, la loro stringa Soundex potrebbe sembrare simile ma non esattamente la stessa.
La funzione accetta un argomento:la stringa da cui restituire la stringa Soundex.
Sintassi
La sintassi è questa:
SOUNDEX(char)
Dove char è la stringa da cui restituire la stringa Soundex. Può essere di qualsiasi tipo di dati CHAR , VARCHAR2 , NCHAR o NVARCHAR2 . Il valore restituito è lo stesso tipo di dati dell'argomento.
Esempio
Ecco un esempio di base:
SELECT SOUNDEX('Bat')
FROM DUAL; Risultato:
B300
Ecco un altro esempio che confronta la stringa Soundex restituita da parole simili, ma diverse, dal suono:
SELECT
SOUNDEX('Bat'),
SOUNDEX('Cat'),
SOUNDEX('Cap')
FROM DUAL; Risultato:
SOUNDEX('BAT') SOUNDEX('CAT') SOUNDEX('CAP')
_________________ _________________ _________________
B300 C300 C100 Ed eccone uno che confronta parole che non suonano allo stesso modo:
SELECT
SOUNDEX('Ponzi'),
SOUNDEX('Bracket'),
SOUNDEX('Heavy')
FROM DUAL; Risultato:
SOUNDEX('PONZI') SOUNDEX('BRACKET') SOUNDEX('HEAVY')
___________________ _____________________ ___________________
P520 B623 H100 Corrispondenze esatte
Ecco un esempio di coppie di parole che hanno una stringa Soundex corrispondente, anche se sono parole diverse, con significati diversi:
SELECT
SOUNDEX('Dam') AS Dam,
SOUNDEX('Damn') AS Damn,
SOUNDEX('Too') AS Too,
SOUNDEX('Two') AS Two
FROM DUAL; Risultato:
DAM DAMN TOO TWO _______ _______ _______ _______ D500 D500 T000 T000
Esempio di database
Ecco un esempio di come ottenere la stringa Soundex da una query del database:
SELECT
country_name,
SOUNDEX(country_name)
FROM countries
FETCH FIRST 10 ROWS ONLY; Risultato:
COUNTRY_NAME SOUNDEX(COUNTRY_NAME) _______________ ________________________ Argentina A625 Australia A236 Belgium B425 Brazil B624 Canada C530 Switzerland S326 China C500 Germany G655 Denmark D562 Egypt E213
Possiamo anche usare SOUNDEX() in un WHERE clausola per restituire solo quelle righe che suonano come una determinata parola:
SELECT
employee_id,
first_name,
last_name
FROM employees
WHERE SOUNDEX(first_name) = SOUNDEX('Stephen'); Risultato:
EMPLOYEE_ID FIRST_NAME LAST_NAME
______________ _____________ ____________
100 Steven King
128 Steven Markle
138 Stephen Stiles Stringa vuota
Ecco cosa succede quando viene passata una stringa vuota per ogni dato argomento:
SET NULL 'null';
SELECT SOUNDEX('')
FROM DUAL; Risultato:
null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.
Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.
Argomento nullo
Passaggio null restituisce null :
SELECT SOUNDEX(null)
FROM DUAL; Risultato:
null
Argomento mancante
Chiamando SOUNDEX() senza passare alcun argomento genera un errore:
SELECT SOUNDEX()
FROM DUAL; Risultato:
Error starting at line : 1 in command - SELECT SOUNDEX() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
E anche passare troppi argomenti provoca un errore:
SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL; Risultato:
Error starting at line : 1 in command -
SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 - "invalid number of arguments"
*Cause:
*Action: