Проверьте в конце varchar2 монеты CHR (10) - PullRequest
0 голосов
/ 01 октября 2018

Мне нужен CSV с большим количеством строк.Мне нужно проверить, есть ли в каждой строке CHR (10) в конце.Я пытался:

IF (SUBSTR(line, -2) == CHR(10)) THEN
    DBMS_OUTPUT.PUT_LINE('THERE IS!');
END IF;

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

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы должны использовать -1, а не -2 в качестве второго аргумента для substr: этот пример работает отлично.

более того ... сравнение на равенство "=", а не "==".

declare
    test_string varchar2(100) := 'text ending with newiline'||chr(10);
begin
   IF (SUBSTR(test_string, -1) = CHR(10)) THEN
      DBMS_OUTPUT.PUT_LINE('THERE IS!');
   END IF;
end;
0 голосов
/ 01 октября 2018

Одним из вариантов будет использование REGEXP_INSTR для специальной проверки последнего символа:

IF (REGEXP_INSTR(line, CHR(10) || '$') > 0) THEN
    DBMS_OUTPUT.PUT_LINE('THERE IS!');
END IF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...