CREATE CAST
This page documents the preview version (v2.21). Preview includes features under active development and is for development and testing only. For production, use the stable version (v2024.1). To learn more, see Versioning.
Synopsis
Use the CREATE CAST
statement to create a cast.
Syntax
create_cast ::= create_cast_with_function
| create_cast_without_function
| create_cast_with_inout
create_cast_with_function ::= CREATE CAST ( cast_signature ) WITH
FUNCTION subprogram_name
[ ( subprogram_signature ) ]
[ AS ASSIGNMENT | AS IMPLICIT ]
create_cast_without_function ::= CREATE CAST ( cast_signature )
WITHOUT FUNCTION
[ AS ASSIGNMENT | AS IMPLICIT ]
create_cast_with_inout ::= CREATE CAST ( cast_signature ) WITH INOUT
[ AS ASSIGNMENT | AS IMPLICIT ]
cast_signature ::= source_type AS target_type
Semantics
See the semantics of each option in the [PostgreSQL docs][postgresql-docs-create-cast].
Examples
WITH FUNCTION
example.
yugabyte=# CREATE FUNCTION sql_to_date(integer) RETURNS date AS $$
SELECT $1::text::date
$$ LANGUAGE SQL IMMUTABLE STRICT;
yugabyte=# CREATE CAST (integer AS date) WITH FUNCTION sql_to_date(integer) AS ASSIGNMENT;
yugabyte=# SELECT CAST (3 AS date);
WITHOUT FUNCTION
example.
yugabyte=# CREATE TYPE myfloat4;
yugabyte=# CREATE FUNCTION myfloat4_in(cstring) RETURNS myfloat4
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE AS 'float4in';
yugabyte=# CREATE FUNCTION myfloat4_out(myfloat4) RETURNS cstring
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE AS 'float4out';
yugabyte=# CREATE TYPE myfloat4 (
INPUT = myfloat4_in,
OUTPUT = myfloat4_out,
LIKE = float4
);
yugabyte=# SELECT CAST('3.14'::myfloat4 AS float4);
yugabyte=# CREATE CAST (myfloat4 AS float4) WITHOUT FUNCTION;
yugabyte=# SELECT CAST('3.14'::myfloat4 AS float4);
WITH INOUT
example.
yugabyte=# CREATE TYPE myint4;
yugabyte=# CREATE FUNCTION myint4_in(cstring) RETURNS myint4
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE AS 'int4in';
yugabyte=# CREATE FUNCTION myint4_out(myint4) RETURNS cstring
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE AS 'int4out';
yugabyte=# CREATE TYPE myint4 (
INPUT = myint4_in,
OUTPUT = myint4_out,
LIKE = int4
);
yugabyte=# SELECT CAST('2'::myint4 AS int4);
yugabyte=# CREATE CAST (myint4 AS int4) WITH INOUT;
yugabyte=# SELECT CAST('2'::myint4 AS int4);