:: Не фоксом единым
Re: Firebird, кавычки в литерале
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
DmitryKn
а как ФБ поймет, что в переменной строка
- тип переменной посмотрит - и не скомпилирует если привести не сможет )))
DmitryKn
И в конце 4 апострофа как получились?
- тут все то же самое - внешние говорят что внутри строка, из двух внутренних апостроф получается
FB: ''''
аналог в фоксе
"'"

Поосмысливаю, спасибо.
Ratings: 0 negative/0 positive
Re: Firebird, кавычки в литерале
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Владимир Максимов
"Вот такой код работает" - это непонятная фраза. Как работает? Мы же не видим, что там у Вас на экране.
Если есть проблемы, то делаются последовательные тесты и смотрят, что там в итоге получается. Возможно, это какая-то фича FireBird. Или, опять же, значение переменной. Вы же упорно не говорите, что там внутри переменной. Может, реально есть ведущая кавычка?

/*
Значение самой переменной
*/
lclastname = trim(:tcnalast)
/*
Сложение без добавление кавычек
*/
lclastname = ' LASTNAME ' || trim(:tcnalast)
/*
Сложение с добавлением только концевых кавычек
*/
lclastname = ' LASTNAME ' || trim(:tcnalast) || ''''
/*
Сложение с добавлением ведущих кавычек внутри текстовой константы
*/
lclastname = ' LASTNAME '' ' || trim(:tcnalast) || ''''
/*
Сложение с добавлением промежуточной пустой строки и текстовой константы
*/
lclastname = ' LASTNAME ' || '' || 'TEST' || ''''

Спасибо за пример
Ratings: 0 negative/0 positive
Re: Firebird, кавычки в литерале
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
А может еще вразумите, как это оформить с помощью Q' , т.е. с заменой символа?
Ratings: 0 negative/0 positive
Re: Firebird, кавычки в литерале
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
А может еще вразумите, как это оформить с помощью Q' , т.е. с заменой символа?
- не пользовался, не могу сказать. Даже и не знаю о таком операторе/способе


Исправлено 1 раз(а). Последнее : AndyNigmatec, 04.05.23 10:44
Ratings: 0 negative/0 positive
Re: Firebird, кавычки в литерале
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
www.firebirdsql.org

Цитата:
Апострофы в строках
Если Вам необходимо использовать в строке символ апострофа, Вы можете «экранировать» (escape) его, предварив его другим апострофом.

Например, следующая строка приведет к ошибке:

'Joe's Emporium'

потому, что анализатор проинтерпретирует текст как строку 'Joe', за которой следуют какие-то неизвестные ключевые слова.

Чтобы сделать строку правильной, необходимо добавить второй апостроф:

'Joe''s Emporium'

Обратите внимание на то, что это ДВА символа одинарной кавычки, но не одна двойная кавычка.
Ratings: 0 negative/0 positive
Re: Firebird, кавычки в литерале
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
DmitryKn
А может еще вразумите, как это оформить с помощью Q' , т.е. с заменой символа?
- не пользовался, не могу сказать. Даже и не знаю о таком операторе/способе

Тогда, возможно, в ФБ 3.0 или 4.0 появился.

Цитата:
Вместо двойного (экранированного) апострофа вы можете использовать другой символ или
пару символов.
Ключевое слово q или Q предшествующее строке в кавычках сообщает парсеру, что
некоторые левые и правые пары одинаковых символов являются разделителями для
встроенного строкового литерала.
S = 'SELECT RDB$TRIGGER_NAME FROM RDB$TRIGGERS WHERE RDB$RELATION_NAME IN ';
S = S || Q'! ('SALES_ORDER', 'SALES_ORDER_LINE')!';
Ratings: 0 negative/0 positive
Re: Firebird, кавычки в литерале
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
www.firebirdsql.org
Цитата:
Апострофы в строках
Если Вам необходимо использовать в строке символ апострофа, Вы можете «экранировать» (escape) его, предварив его другим апострофом.

Например, следующая строка приведет к ошибке:

'Joe's Emporium'

потому, что анализатор проинтерпретирует текст как строку 'Joe', за которой следуют какие-то неизвестные ключевые слова.

Чтобы сделать строку правильной, необходимо добавить второй апостроф:

'Joe''s Emporium'

Обратите внимание на то, что это ДВА символа одинарной кавычки, но не одна двойная кавычка.

Тут как то даже понятнее, чем в руководстве по ФБ4.0
Спасибо!



Исправлено 1 раз(а). Последнее : DmitryKn, 04.05.23 14:23
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 10 (Гостей: 10)

© 2000-2024 Fox Club 
Яндекс.Метрика