#sql #salesforce #soql
Вопрос:
Предполагая, что запрос выглядит следующим образом:
SELECT Id FROM Contact WHERE <some filter here>
и я хочу добавить это:
AND field = value
Другими словами: если запрос заканчивается на ГДЕ (не содержит других разделов/операторов, таких как «ОГРАНИЧЕНИЕ» и т. Д.), Можете ли вы ВСЕГДА добавлять И и не прерывать его?
Ответ №1:
Не уверен, что понял вопрос, и я думаю, что это не лучший способ продолжить. В любом случае, я думаю, что это всегда возможно. Обратите внимание, чтобы здесь был «какой-то фильтр», который не заканчивается на»;», и оставьте пустое место перед контентом, который вы хотели бы добавить. Убедитесь, что используемые атрибуты совместимы с выбранной таблицей.
Комментарии:
1. Спасибо. Это не я сделал это таким образом, я неправильно сформулировал вопрос. Я просто выяснял, можно ли его как-то сломать или нет.
Ответ №2:
Нет, есть запросы, в которых добавление И поле=значение в конец приведет к недопустимому запросу. Самый простой пример-тот, в котором есть предложение ИЛИ.
select name from Contact where name like 'a%' or name like 'z%'
Добавление предложения и дает
select name from Contact where name like 'a%' or name like 'z%' AND email=null
что при запуске приведет к неправильной ошибке запроса.
MALFORMED_QUERY:
name like 'a%' or name like 'z%' AND email=null
^
ERROR at Row:1:Column:64
unexpected token: AND
Комментарии:
1. Я думаю, что запросы, которые это будет сделано, будут иметь избыточные парантезы, подобные этому:
SELECT Id FROM Contact WHERE (name like 'a%' or name like 'z%')
это устраняет эту проблему. Как ты думаешь, это все, что может пойти не так?