Оператор не существует: текст + целое число [Postgres 9.5] - PullRequest
0 голосов
/ 27 июня 2018

У меня проблема с этим фрагментом кода из SQL:

UPDATE resultats_du_jour
SET Heure_debut =  CONCAT(SUBSTRING(Heure_debut,1,2) +
    12,SUBSTRING(Heure_debut,3,3))
WHERE Heure_debut LIKE '%PM';

Это дает мне следующий вывод:

sql:53: ER ROR: operator does not exist: text + integer LINE 1: ...ET Heure_debut = CONCAT(SUBSTRING(Heure_debut,1,2)+12,SUBSTR... 

Я понимаю, что вы не можете добавить текст + целое число, но как мне это сделать?

Большое спасибо.

1 Ответ

0 голосов
/ 27 июня 2018

Если вы хотите добавить 12 к числовому эквиваленту первой взятой вами подстроки, а затем снова объединить ее обратно в текст, то вы можете использовать приведение:

UPDATE resultats_du_jour
SET Heure_debut =  CONCAT((SUBSTRING(Heure_debut, 1, 2)::int + 12)::text,
    SUBSTRING(Heure_debut, 3, 3))
WHERE Heure_debut LIKE '%PM';

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

...