Использование сравнения в строках в SOQL

Один из столбцов (идентификатор) в пользовательском объекте Salesforce имеет тип String, хотя он всегда содержит значения длинного типа. Я хочу запустить запрос что-то вроде этого.

Где id >= '123' и id ‹= '123456';

Есть ли какое-нибудь решение для этого? Невозможно изменить тип данных столбца в Salesforce.


person RandomQuestion    schedule 17.05.2012    source источник


Ответы (2)


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

В конечном счете, правильным ответом будет либо дополнить число ведущими нулями, если они должны быть текстовыми, либо изменить тип данных на число.

person John De Santiago    schedule 17.05.2012

если ваш идентификатор всегда содержит значения длинного типа, вы можете использовать следующее предложение where

WHERE CONVERT(BIGINT, id) BETWEEN 123 AND 123456

Однако это вызовет ошибку, если ваш идентификатор не является числовым значением.

person Nick    schedule 17.05.2012
comment
эта функция Convert поддерживается в SOQL? Я пытаюсь использовать проводник Force.com, но, похоже, он не работает. - person RandomQuestion; 17.05.2012
comment
я не уверен насчет SOQL, но вы можете обратиться к этот пост - person Nick; 17.05.2012