#sql #sqlite
#sql #sqlite
Вопрос:
В моей таблице есть 3 текстовых поля: open_time_2, close_time_2, displayed_value (примерные значения ‘5:45’, ‘4:15’, «). Необходимо обновить отображаемое значение текстом ‘4:15 — 5:45’. Если я использую следующий запрос:
UPDATE mytable SET displayed_value=(close_time_2 '-' open_time_2)
WHERE close_time_2!=""
В результате я получаю значение ‘9.0’. Что здесь не так?
Комментарии:
1. каков тип данных targetColumn??
2. отображаемое значение также является текстовым.
Ответ №1:
Вы должны использовать оператор конкатенации SQLite, ||
, а не сложение:
UPDATE mytable SET displayed_value=(close_time_2 || '-' || open_time_2)
WHERE close_time_2 != ""
Комментарии:
1. Спасибо. Странно, что в документации говорится, что можно использовать со строками.
2. может использоваться для строк, но по-прежнему является оператором сложения — он попытается преобразовать строки в числа (
'2'
преобразуется в2
,'3abcd'
преобразуется в3
,'abcd'
преобразуется в0
, и, как в вашем случае,'4:15'
преобразуется в4
, отсюда и результат9
)