Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: JibberHorse от 04 Сентября 2019, 09:14:50

Название: Интерпретация строки SQL в скриптах SimpleScada
Отправлено: JibberHorse от 04 Сентября 2019, 09:14:50
Здравствуйте!
К проекту привязана база данных MySQL. Данные из таблицы messages_data считываются в таблицу на экране проекта.
Строка запроса в MySQL работает (скрин во вложении), а выполнение скрипта в SimpleScada "ругается" на знак процентов (%).
Как правильно нужно написать выделенный кусок?:
var
  strQuery: string;
begin
  strQuery := 'SELECT Timestamp, Text FROM `messages_data` WHERE `Text` LIKE %admin% ORDER BY Timestamp DESC;';
  JS_Table.RunSQL(strQuery, tsAll);
end.    
Название: Re: Интерпретация строки SQL в скриптах SimpleScada
Отправлено: pan2000 от 04 Сентября 2019, 10:25:14
Здравствуйте.

Указать текстовую константу внутри строки заключением в пары одиночных кавычек:

strQuery := 'SELECT Timestamp, Text FROM `messages_data` WHERE `Text` LIKE ''%admin%'' ORDER BY Timestamp DESC;';
Название: Re: Интерпретация строки SQL в скриптах SimpleScada
Отправлено: JibberHorse от 04 Сентября 2019, 10:51:54
Спасибо! сработало.
А то какие только варианты символов уже не перебирали...
Название: Re: Интерпретация строки SQL в скриптах SimpleScada
Отправлено: Dmitry_Impuls от 06 Сентября 2019, 11:02:57
Указать текстовую константу внутри строки заключением в пары одиночных кавычек:
strQuery := 'SELECT Timestamp, Text FROM `messages_data` WHERE `Text` LIKE ''%admin%'' ORDER BY Timestamp DESC;';
Более общий подход использовать QuotedStr.
Код: (delphi)
strQuery := 'SELECT Timestamp, Text FROM `messages_data` WHERE `Text` LIKE ' + QuotedStr('%admin%') + ' ORDER BY Timestamp DESC;';
P.S. Сам пользуюсь удвоением кавычек...