Подтвердить что ты не робот

Postgresql. CREATE CAST 'меняется от' to 'integer'

Я хочу СОЗДАТЬ CAST подходящую функцию для преобразования символа, меняющегося 'в' integer '. Может ли кто-нибудь предложить функцию? Все, что я пытаюсь, терпит неудачу.

4b9b3361

Ответ 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