Я хочу СОЗДАТЬ CAST подходящую функцию для преобразования символа, меняющегося 'в' integer '. Может ли кто-нибудь предложить функцию? Все, что я пытаюсь, терпит неудачу.
Postgresql. CREATE CAST 'меняется от' to 'integer'
Ответ 1
Используйте это:
CREATE CAST (varchar AS integer) WITH INOUT [AS IMPLICIT];
Он использует функции ввода/вывода для задействованных типов данных.
Ответ 2
Функция выше работает, если вы обновите свой SQL, чтобы сделать явный приведение. Однако, если вы добавите "как неявный" в конец вашего оператора "create cast", Postgres сможет автоматически определить, что вы пытаетесь сделать, когда сравниваете целое число с varchar, которое может быть преобразовано в целое число.
Вот мое обновленное выражение, которое, похоже, работает "неявно":
CREATE FUNCTION toint(varchar)
RETURNS integer
STRICT IMMUTABLE LANGUAGE SQL AS
'SELECT cast($1 as integer);';
CREATE CAST (varchar AS integer) WITH FUNCTION toint(varchar) as Implicit;
Ответ 3
Я предполагаю, что вы хотите вернуть поведение Postgres 8.3 в отношении неявного литья.
Смотрите эту запись в блоге для примера:
http://petereisentraut.blogspot.com/2008/03/readding-implicit-casts-in-postgresql.html
О: и ошибка, что поставщик программного обеспечения исправить сломанный SQL;)
Edit
Это должно сделать это:
CREATE FUNCTION toint(varchar) RETURNS integer STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT cast($1 as integer);'; CREATE CAST (varchar AS integer) WITH FUNCTION toint(varchar);
Ответ 4
Я получил ту же ошибку. У меня есть COLUMN
код
объявлен как символ типа, различающийся (20), и локальная переменная
l_code
объявлен как тип int.
Я решил заменить в процедуре
SELECT
...
WHERE
code = l_code AND
..
с
code = cast( l_code as character varying) AND