Oracle: найти управляющие символы, кроме перевода строки

Я пытаюсь использовать все строки, в которых столбец содержит какие-либо контрольные диаграммы, за исключением символа перевода строки (шестнадцатеричное значение A). Я пробовал следующее, но это возвращает только результаты с управляющим символом и без перевода строки. Мне действительно нужен набор символов, которые являются управляющими символами, МЕНЬШЕ символа перевода строки. Есть ли операция «минус» для наборов символов, из которых можно исключить определенные?

SELECT *
FROM MyTable
WHERE REGEXP_LIKE(MyColumn, '[:cntrl: &&[^' || UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('A')) || ']]{1,}');

Есть предположения? Спасибо!


person jcarman    schedule 21.06.2016    source источник


Ответы (1)


Что ж, вот первая попытка, которая сработает, но я уверен, что ее можно сделать более элегантной и эффективной:

SELECT *
FROM MyTable
WHERE regexp_like(MyColumn, '[[:cntrl:]]')
AND MyColumn NOT like '%' || chr(10) || '%';
person Gary_W    schedule 21.06.2016
comment
Фактически это будет делать то же самое, что и запрос выше, результаты будут возвращены только тогда, когда есть управляющий символ и нет экземпляра символа перевода строки. Мне нужно найти результаты всех управляющих символов, за исключением символа перевода строки. - person jcarman; 23.06.2016