Erkennen alle Sonderzeichen (ascii-codes 128 bis 255) auf varchar-Spalte
ich habe eine Tabelle ist, die ein description_text
Spalte ( NVARCHAR
), die ich brauche, um zu überprüfen, ob eventuell spezielle Zeichen (von ascii-codes 128 bis 255).
Was ich schrieb ist:
SELECT cid as ID, description_id as "Element ID", description_text as Text, 'special characters in description_text (tbdescription)' as "Error"
FROM tbdescription d
WHERE
(
description_text LIKE '%' || CHR (129) || '%'
or description_text LIKE '%' || CHR (130) || '%'
//..and so on..//
)
Was macht den job, aber ich bin sicher, es gibt elegantere Möglichkeit der überprüfung all diese ascii-codes, ohne all die or
Bedingungen.
Ich verwenden Sie die Oracle-Client-Version 11.1.0.6.0
Als weitere option könnte man verwenden, regexp_like() regulären Ausdruck-Funktion. Die
Du meinst wie:
where
Klausel würde eine Abfrage Aussehen weniger überladen, aber die Leistung wird sich wahrscheinlich verschlechtern.Du meinst wie:
where regexp_like(description_text, '(' || chr(128) || '|' || chr(129) || ')')
? noch mit or
Bedingungen. Ich bin auf der Suche nach etwas, dass der check reicht von ascii-codes, wenn möglich.InformationsquelleAutor Alon Adler | 2013-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie fast da. where regexp_like(description_text, '(' || chr(128) || '-' || chr(255) || ')')
Verwenden hiphen statt der Rohr-in Ihren regular expresssion.
regexp_like(description_text, '(' || chr(97) || '-' || chr(122) || ')')
), um zu sehen, wenn es keine Ergebnisse zurückgibt, ist es aber nicht. Können Sie überprüfen, warum ?Es funktionierte für mich. sqlfiddle.com/#!4/9bbe9/135
My bad, ich hab vergessen zu ändern
'('
zu'['
. Vielen Dank 🙂InformationsquelleAutor DB_learner