Как объединить текстовые поля в одно поле?

#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 )