Прежде всего, спасибо "Дени де Бернарди" (прокомментировано выше) ,
Я пытался обновить поле, и это было очень полезно.
Недавно я изучал PostgreSQL VS Redshift SQL и как разные запросы ...
Итак, пытаясь сделать обновление в RedShift, оно работало так:
UPDATE table_name SET fieldname = fieldname + 100
FROM table_name WHERE substring(fieldname from 4 for 2)
IN ('01','02','03','04','05','06','07','08','09','10','11','12');
Но в Postgres 9.3 мой запрос не удался.
Так что после долгих исследований и попыток найти что-нибудь, чтобы это заработало ...
В конце концов, все, что я добавил для добавления, было ::varchar
в конце имени поля, например:
fieldname::varchar
Причина была в том, что подстрока postgresql () ожидает текст, а мое имя поля было BIGINT, что не позволило мне использовать подфункцию.
Итак, для сравнения запросов:
СТАРЫЙ запрос
UPDATE table_name SET fieldname = fieldname + 100
FROM table_name WHERE substring(fieldname from 4 for 2)
IN ('01','02','03','04','05','06','07','08','09','10','11','12');
Новый запрос для Postgres 9,3
UPDATE table_name SET fieldname = fieldname + 100
FROM table_name WHERE substring(fieldname::varchar from 4 for 2)
IN ('01','02','03','04','05','06','07','08','09','10','11','12');
Обратите внимание: снова все, что мне нужно было сделать, это преобразовать поле для использования в запросе подстроки, чтобы оно содержало :: varchar
Снова
Спасибо.