Dieser Tage wurde ich gefragt, wie man ein Ampersand-Symbol (&) in einer LIKE-Bedingung escapen kann (ja: he does it again), und glaubte, dass das einfach über eine ESCAPE-Klausel im LIKE funktionieren würde, was aber ein Schlag ins Wasser war:
select * from test; MY_STRING ----------- BLA&BLA select * from test where my_string like '%/&BLA' escape '/'; Geben Sie einen Wert für bla ein:
Da das & für sqlplus als Ersetzungsvariable fungiert, wird hier eine Eingabe gefordert. Um das Verhalten zu ändern, kann man die Auswertung der Variable deaktivieren:
set define off select * from test where my_string like '%&BLA'; MY_STRING ---------- BLA&BLA
In diesem Fall würde das Escape sogar einen Fehler hervorrufen ("ORA-01424: Zeichen nach dem Escape-Zeichen fehlen oder sind ungültig"), da das &-Zeichen nun in der Tat ein ganz gewöhnliches Element ist.
Alternativ kann man auch mit dem Kommando "SET ESCAPE ON" und dem default-Escape-Charakter Backslash (\) arbeiten:
set define on set escape on select * from test where my_string like '%\&BLA'; MY_STRING ---------- BLA&BLA
Keine Kommentare:
Kommentar veröffentlichen