Формат строки в запросе sqlite
В моем запросе выбора я использую string.format для предложений where. Когда у меня есть strfTime в формате, я получаю ошибки.
select = String.format(Locale.US, "SELECT %d AS %s, CAST(strftime('%s', START) AS integer) AS %s",
SORT_ID, SORT_ORDER_ID, SORT_ORDER_DATE);
// select = "SELECT" + SORT_ID + "AS SORT_ORDER_ID, CAST (strftime ('%s', START) AS целое число) AS SORT_ORDER_DATE";
Закомментированная строка без string.format работает. Но когда я добавляю string.format, я получаю MissingFormatArgumentException: спецификатор формата "%s"
2 ответа
format()
функция использует %
в качестве сменных маркеров; он ожидает строку для %s
в призыве к strftime()
,
Но вы не хотите, чтобы это было заменено format()
, Получить format()
вывести один %
символ, вы должны избежать его, удвоив его в строке формата:
String.format("... strftime('%%s', START) ...", ...);
Ваша строка формата
"SELECT %d AS %s, CAST(strftime('%s', START) AS integer) AS %s"
%d
%s
%s
%s
параметры
SORT_ID
SORT_ORDER_ID
SORT_ORDER_DATE
проблема
Ваш формат требует четырех параметров. Но вы предоставляете только три параметра. Исправьте это.
Я думаю, что параметр для последнего псевдонима AS %s
пропал, отсутствует
Дополнительная проблема-
CAST(strftime('%s', START)
Это не строка для формата.
Попробуй это.
String QUERY_INTEGER = "CAST(strftime('%s', START)";
select = String.format(Locale.US, "SELECT %d AS %s, %s AS integer) AS %s",
SORT_ID, SORT_ORDER_ID, QUERY_CAST, SORT_ORDER_DATE);