PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

postgresql неправилно формиран литерал на масив в create aggregate initcond

Имате нужда от кавички около вашите масиви и това е така, защото масивът е в текстова версия на ред.

Лесен за тестване, като вземете въведеното от вас като ред и видите как postgres го форматира (необходими са единични кавички около масивите тук, защото {} е масив в текст):

SELECT ROW(0,NULL,NULL, 0, 0, 0, 0, '{}', '{1,2,3,4,5}', '{1,2,3,4,5}', '{0,0.25,0.5,0.75,1}')

Връща:

(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")

Следователно трябва да направите:

...
initcond = '(0,,,0,0,0,0,{},"{1,2,3,4,5}","{1,2,3,4,5}","{0,0.25,0.5,0.75,1}")'

Защо не се изискват кавички за масив, който е празен или има само една стойност:

Няколко стойности в масив са разделени със запетая, а полетата в ред също са разделени със запетая. Ако предоставите ред като '(0,{1,2})' , PG ще интерпретира това като три полета:0 , {1 , 2} . Естествено в този случай ще получите грешка за неправилно образуван масив. Поставянето на поле в кавички означава, че всичко в тези кавички е едно поле. Следователно '(0,"{1,2}")' ще се интерпретира правилно като 0 , {1,2} . Ако масивът е празен или съдържа само една стойност, няма да има запетая, така че няма проблем при правилното анализиране на това поле.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв точно оператор за сравнение между `bigint` и `date` в postgresql?

  2. QT5:Неуспешно зареждане на psql драйвер в Windows

  3. IntegrityError:прави разлика между уникално ограничение и ненулеви нарушения

  4. План за изпълнение на функции в PostgreSQL

  5. Деактивирайте обвиването в изхода на Psql