Hi,
select NAME from TEST_TABLE where NAME=‚Schmid‘
aber, ich möchte, dass er auch anders geschriebene „Schmid“
erkennt (SCHMID, …) oder auch TeilStrings erkennt
(SCHIDHUBER)
Dazu gibt es eine eingebaute Funktion: Soundex. Diese errechnet aus einer Zeichnekette einen 4stelligen Code, der für sich alleine keinen besonderen Wert hat, aber die Eigenschaft aufweist, für ähnliche Zeichenketten ähnliche Werte zu liefern. Ein Beispiel:
SQL\> select soundex('Schmid') from dual;
SOUN
----
S530
SQL\> select soundex('SCHMID') from dual;
SOUN
----
S530
SQL\> select soundex('SCHMIDBAUER') from dual;
SOUN
----
S531
SQL\> select soundex('SCHMIDHUBER') from dual;
SOUN
----
S531
Wie du unschwer erkennen kannst, ist sie „eingeschränkt brauchbar“. Für Groß-und Kleinschreibung ist sie gut, aber für andere Vergleiche, insbesondere bei längeren Worten, ist sie kaum zu gebrauchen. Zwei Beispiele:
SQL\> select soundex('ich finde, Soundex ist genial') from dual;
SOUN
----
I215
SQL\> select soundex('ich finde, Soundex ist das dämlichste, was es gibt') from dual;
SOUN
----
I215
Hier erkennt man, daß völlig unterschiedliche Zeichenketten gleiche Werte liefern können.
SQL\> select soundex('Lahmeyer') from dual;
SOUN
----
L560
SQL\> select soundex('Dietmeyer') from dual;
SOUN
----
D356
Hier erkennt man, daß Zeichenketten, die vom Menschen als ähnlich empfunden werden, völlig unterschiedliche Werte liefern können.
Du mußt genauer wissen, was du als „ähnlich“ definierst. Dann läßt sich das auch mit anderen Mitteln herausfiltern.
Beispieslweise könnte man mit einem ähnlichen Ausdruck Erfolg haben:
SELECT Name, Vorname
FROM Adressen
WHERE UPPER(Name) LIKE UPPER ('Schmid%');
Gruß
J.