Замена статических подстрок в строках SQL на строки с постоянной датой - PullRequest
0 голосов
/ 31 августа 2018

У меня есть программное обеспечение, которое имеет встроенный процессор кода и поддерживает сценарии оболочки. У меня есть несколько строк SQL в файле, которые будут обрабатываться программным обеспечением по одному, и значения определенной подстроки. константы будут переопределены этим программным обеспечением без изменения исходного файла, который содержит исходный SQL. Вы можете передать параметры замены во время выполнения этому программному обеспечению.

Ниже приведен пример sed для одного из SQL:

echo " select * from TABLE where   DATE(TSP_DATE) between (CURRENT DATE -1 DAY) AND (CURRENT DATE)" | sed -e 's/CURRENT DATE - 1 DAY/'08/30/2018'/; s CURRENT DATE/'08/31/2018'/

Я хочу заменить подстроки

ТЕКУЩАЯ ДАТА - 1 ДЕНЬ

с '08 / 30/2018 'и

ТЕКУЩАЯ ДАТА

с '08 / 31/2018 'с использованием одной команды. Строки даты включают кавычки.

Когда я запустил вышеуказанный скрипт, я получил ошибку ниже:

sed: -e выражение # 1, символ 29: неизвестная опция для 's'

С уважением, Анкит

1 Ответ

0 голосов
/ 31 августа 2018

Не уверен, что если вы хотите реализовать решение, это сложнее, чем необходимо.

Какую бы СУБД вы не использовали, я вполне уверен, что у нее есть функция для текущей даты. Так что вам не нужно делать это в вашем скрипте.

Например, когда вы используете MySQL, вы можете просто использовать этот запрос:

select * from TABLE where DATE(TSP_DATE) between CURDATE() - INTERVAL 1 DAY AND CURDATE();

Если вы все равно хотите сделать это с помощью sed, вы можете сделать это следующим образом:

echo "select * from TABLE where   DATE(TSP_DATE) between (CURRENT DATE -1 DAY) AND (CURRENT DATE)" | sed "s#CURRENT DATE -1 DAY#'08/30/2018'#;s#CURRENT DATE#'08/31/2018'#"

В качестве разделителя вы можете выбрать все, что захотите. Когда вы выбираете что-то отличное от /, вам не нужно всегда избегать этого, когда вы используете это в своей замещающей строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...