In Oracle das SOUNDEX()
Die Funktion gibt eine Zeichenfolge zurück, die die phonetische Darstellung ihres Arguments enthält. Dies ist als Soundex-String bekannt.
Soundex ist ein phonetischer Algorithmus zum Indizieren von Namen nach Ton, wie sie im Englischen ausgesprochen werden. Wenn zwei Wörter gleich klingen, sollten sie den gleichen Soundex-String haben. Wenn zwei Wörter ähnlich, aber nicht genau gleich klingen, sieht ihre Soundex-Zeichenfolge möglicherweise ähnlich, aber nicht genau gleich aus.
Die Funktion akzeptiert ein Argument:die Zeichenfolge, von der die Soundex-Zeichenfolge zurückgegeben werden soll.
Syntax
Die Syntax sieht so aus:
SOUNDEX(char)
Wobei char
ist die Zeichenfolge, für die die Soundex-Zeichenfolge zurückgegeben werden soll. Es kann einen der Datentypen CHAR
haben , VARCHAR2
, NCHAR
, oder NVARCHAR2
. Der Rückgabewert ist vom gleichen Datentyp wie das Argument.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT SOUNDEX('Bat')
FROM DUAL;
Ergebnis:
B300
Hier ist ein weiteres Beispiel, das die Soundex-Zeichenfolge vergleicht, die von ähnlichen, aber unterschiedlich klingenden Wörtern zurückgegeben wird:
SELECT
SOUNDEX('Bat'),
SOUNDEX('Cat'),
SOUNDEX('Cap')
FROM DUAL;
Ergebnis:
SOUNDEX('BAT') SOUNDEX('CAT') SOUNDEX('CAP') _________________ _________________ _________________ B300 C300 C100
Und hier ist einer, der Wörter vergleicht, die nicht gleich klingen:
SELECT
SOUNDEX('Ponzi'),
SOUNDEX('Bracket'),
SOUNDEX('Heavy')
FROM DUAL;
Ergebnis:
SOUNDEX('PONZI') SOUNDEX('BRACKET') SOUNDEX('HEAVY') ___________________ _____________________ ___________________ P520 B623 H100
Genaue Übereinstimmungen
Hier ist ein Beispiel für Wortpaare, die eine übereinstimmende Soundex-Zeichenfolge haben, obwohl es sich um unterschiedliche Wörter mit unterschiedlichen Bedeutungen handelt:
SELECT
SOUNDEX('Dam') AS Dam,
SOUNDEX('Damn') AS Damn,
SOUNDEX('Too') AS Too,
SOUNDEX('Two') AS Two
FROM DUAL;
Ergebnis:
DAM DAMN TOO TWO _______ _______ _______ _______ D500 D500 T000 T000
Datenbankbeispiel
Hier ist ein Beispiel für das Abrufen der Soundex-Zeichenfolge aus einer Datenbankabfrage:
SELECT
country_name,
SOUNDEX(country_name)
FROM countries
FETCH FIRST 10 ROWS ONLY;
Ergebnis:
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
Wir können auch SOUNDEX()
verwenden in einem WHERE
-Klausel, um nur die Zeilen zurückzugeben, die wie ein bestimmtes Wort klingen:
SELECT
employee_id,
first_name,
last_name
FROM employees
WHERE SOUNDEX(first_name) = SOUNDEX('Stephen');
Ergebnis:
EMPLOYEE_ID FIRST_NAME LAST_NAME ______________ _____________ ____________ 100 Steven King 128 Steven Markle 138 Stephen Stiles
Leerer String
Folgendes passiert, wenn für jedes angegebene Argument eine leere Zeichenfolge übergeben wird:
SET NULL 'null';
SELECT SOUNDEX('')
FROM DUAL;
Ergebnis:
null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null
tritt als Ergebnis eines SQL SELECT
auf Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Null-Argument
Übergabe von null
gibt null
zurück :
SELECT SOUNDEX(null)
FROM DUAL;
Ergebnis:
null
Fehlendes Argument
Aufruf von SOUNDEX()
ohne Übergabe von Argumenten ergibt sich ein Fehler:
SELECT SOUNDEX()
FROM DUAL;
Ergebnis:
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:
Und die Übergabe zu vieler Argumente führt ebenfalls zu einem Fehler:
SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL;
Ergebnis:
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: