In Oracle, de SOUNDEX()
functie retourneert een tekenreeks die de fonetische representatie van zijn argument bevat. Dit staat bekend als de Soundex-snaar.
Soundex is een fonetisch algoritme voor het indexeren van namen op geluid, zoals uitgesproken in het Engels. Als twee woorden hetzelfde klinken, moeten ze dezelfde Soundex-snaar hebben. Als twee woorden hetzelfde klinken, maar niet precies hetzelfde, kan hun Soundex-snaar er hetzelfde uitzien, maar niet precies hetzelfde.
De functie accepteert één argument:de tekenreeks waarvan de Soundex-reeks moet worden geretourneerd.
Syntaxis
De syntaxis gaat als volgt:
SOUNDEX(char)
Waar char
is de tekenreeks waarvan de Soundex-reeks moet worden geretourneerd. Het kan van elk van de gegevenstypen CHAR
. zijn , VARCHAR2
, NCHAR
, of NVARCHAR2
. De geretourneerde waarde is hetzelfde gegevenstype als het argument.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT SOUNDEX('Bat')
FROM DUAL;
Resultaat:
B300
Hier is nog een voorbeeld dat de Soundex-reeks vergelijkt die wordt geretourneerd door vergelijkbare, maar verschillende, klinkende woorden:
SELECT
SOUNDEX('Bat'),
SOUNDEX('Cat'),
SOUNDEX('Cap')
FROM DUAL;
Resultaat:
SOUNDEX('BAT') SOUNDEX('CAT') SOUNDEX('CAP') _________________ _________________ _________________ B300 C300 C100
En hier is er een die woorden vergelijkt die niet hetzelfde klinken:
SELECT
SOUNDEX('Ponzi'),
SOUNDEX('Bracket'),
SOUNDEX('Heavy')
FROM DUAL;
Resultaat:
SOUNDEX('PONZI') SOUNDEX('BRACKET') SOUNDEX('HEAVY') ___________________ _____________________ ___________________ P520 B623 H100
Exacte overeenkomsten
Hier is een voorbeeld van woordparen die een overeenkomende Soundex-string hebben, ook al zijn het verschillende woorden, met verschillende betekenissen:
SELECT
SOUNDEX('Dam') AS Dam,
SOUNDEX('Damn') AS Damn,
SOUNDEX('Too') AS Too,
SOUNDEX('Two') AS Two
FROM DUAL;
Resultaat:
DAM DAMN TOO TWO _______ _______ _______ _______ D500 D500 T000 T000
Databasevoorbeeld
Hier is een voorbeeld van het ophalen van de Soundex-string uit een databasequery:
SELECT
country_name,
SOUNDEX(country_name)
FROM countries
FETCH FIRST 10 ROWS ONLY;
Resultaat:
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
We kunnen ook SOUNDEX()
. gebruiken in een WHERE
clausule om alleen die rijen terug te geven die als een bepaald woord klinken:
SELECT
employee_id,
first_name,
last_name
FROM employees
WHERE SOUNDEX(first_name) = SOUNDEX('Stephen');
Resultaat:
EMPLOYEE_ID FIRST_NAME LAST_NAME ______________ _____________ ____________ 100 Steven King 128 Steven Markle 138 Stephen Stiles
Lege string
Dit is wat er gebeurt als een lege string wordt doorgegeven voor elk gegeven argument:
SET NULL 'null';
SELECT SOUNDEX('')
FROM DUAL;
Resultaat:
null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Nullargument
Doorgeven van null
retourneert null
:
SELECT SOUNDEX(null)
FROM DUAL;
Resultaat:
null
Ontbrekend argument
SOUNDEX()
. aanroepen zonder het doorgeven van argumenten resulteert in een fout:
SELECT SOUNDEX()
FROM DUAL;
Resultaat:
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:
En het doorgeven van te veel argumenten resulteert ook in een fout:
SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL;
Resultaat:
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: