Можете ли вы добавить «И поле = значение» в любой запрос SOQL?

#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%') это устраняет эту проблему. Как ты думаешь, это все, что может пойти не так?