Выбор точки с запятой в сценарии SQL, но исключая точку с запятой в конце строки - PullRequest
0 голосов
/ 30 октября 2019
INSERT INTO database 
VALUES (1000008,"JONES, Beverley","GEN-BAB-001-02","L","93;104;185;245","Babcock, John U.E.");

Некоммерческая организация ведет базу данных источников исторической информации. Я хотел бы ЗАМЕНИТЬ ; в разделе 93;104;185;245, оставляя при этом последний ; на месте для завершения записи.

Я выполнял построчное преобразование синтаксиса вручную в MySQL Workbench, номне пришло в голову, что FIND и REPLACE в Notepad ++ будут «намного быстрее», поскольку база данных содержит более 1,4 миллиона строк кода. Моя мимолетная оценка REGEX предполагает, что решение существует.

Пока что все изменения были ручными.

1 Ответ

0 голосов
/ 30 октября 2019
  • Ctrl + H
  • Найти что: (?<!\));
  • Заменить на: . Вы можете изменить натребуемый символ.
  • CHECK Обтекание
  • CHECK Регулярное выражение
  • UNCHECK . matches newline*
  • Заменить все

Объяснение:

(?<!\))     # negative lookbehind, make we haven't a closing parenthesis before
;           # semicolon

Результат для данного примера:

INSERT INTO database 
VALUES (1000008,"JONES, Beverley","GEN-BAB-001-02","L","93.104.185.245","Babcock, John U.E.");

Снимок экрана (до):

enter image description here

Снимок экрана (после):

enter image description here

...