运算符不存在:文本 + 整数 [Postgres 9.5]
Operator does not exist: text + integer [Postgres 9.5]
我对来自 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...
我知道您不能添加文本+整数,但我该如何继续呢?
非常感谢。
如果您想将 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';
这感觉有点老套,一般来说,作为一个好的设计,您应该决定某种数据类型是文本还是数字。在这里,如果你把东西存储为数字,你可能根本不需要转换。
我对来自 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...
我知道您不能添加文本+整数,但我该如何继续呢?
非常感谢。
如果您想将 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';
这感觉有点老套,一般来说,作为一个好的设计,您应该决定某种数据类型是文本还是数字。在这里,如果你把东西存储为数字,你可能根本不需要转换。