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: