---
name: "create_conversion"
section: "7"
platform: "linux"
package: "postgresql"
version: "7.4.7-6sarge6"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/create_conversion"
---

# create\_conversion(7)

define a new conversion

## NAME

CREATE CONVERSION - define a new conversion

## SYNOPSIS

```
CREATE [DEFAULT] CONVERSION name
    FOR source_encoding TO dest_encoding FROM funcname

```

## DESCRIPTION

**CREATE CONVERSION** defines a new encoding conversion. Conversion names may be used in the **convert** function to specify a particular encoding conversion. Also, conversions that are marked DEFAULT can be used for automatic encoding conversion between client and server. For this purpose, two conversions, from encoding A to B **and** from encoding B to A, must be defined.

To be able to create a conversion, you must have EXECUTE privilege on the function and CREATE privilege on the destination schema.

## PARAMETERS

- **DEFAULT**

  The DEFAULT clause indicates that this conversion is the default for this particular source to destination encoding. There should be only one default encoding in a schema for the encoding pair.

- *name*

  The name of the conversion. The conversion name may be schema-qualified. If it is not, the conversion is defined in the current schema. The conversion name must be unique within a schema.

- *source\_encoding*

  The source encoding name.

- *dest\_encoding*

  The destination encoding name.

- *funcname*

  The function used to perform the conversion. The function name may be schema-qualified. If it is not, the function will be looked up in the path.

  The function must have the following signature:

  ```
  conv_proc(
      integer,  -- source encoding ID
      integer,  -- destination encoding ID
      cstring,  -- source string (null terminated C string)
      cstring,  -- destination string (null terminated C string)
      integer   -- source string length
  ) RETURNS void;

  ```

## NOTES

Use **DROP CONVERSION** to remove user-defined conversions.

The privileges required to create a conversion may be changed in a future release.

## EXAMPLES

To create a conversion from encoding UNICODE to LATIN1 using **myfunc**:

```
CREATE CONVERSION myconv FOR 'UNICODE' TO 'LATIN1' FROM myfunc;

```

## COMPATIBILITY

**CREATE CONVERSION** is a PostgreSQL extension. There is no **CREATE CONVERSION** statement in the SQL standard.

## SEE ALSO

ALTER CONVERSION \[[**alter\_conversion**(7)](/alter_conversion/7.md)\], CREATE FUNCTION \[**create\_function**(l)\], DROP CONVERSION \[**drop\_conversion**(l)\]
