---
title: "CREATE OPERATOR"
url: "https://docs.yugabyte.com/stable/api/ysql/the-sql-language/statements/ddl_create_operator/"
---

# CREATE OPERATOR

Use the CREATE OPERATOR statement to create an operator.

## Synopsis

Use the CREATE OPERATOR statement to create an operator.

## Syntax

- [![Grammar Icon](/icons/file-lines.svg)Grammar](#grammar-1)
- [![Diagram Icon](/icons/diagram.svg)Diagram](#diagram-1)

```output.ebnf
create_operator ::= CREATE OPERATOR operator_name  ( 
                    { FUNCTION = subprogram_name
                      | PROCEDURE = subprogram_name } 
                    [ , operator_option [ ... ] ] )

operator_option ::= LEFTARG = left_type
                    | RIGHTARG = right_type
                    | COMMUTATOR = com_op
                    | NEGATOR = neg_op
                    | RESTRICT = res_proc
                    | JOIN = join_proc
                    | HASHES
                    | MERGES
```

#### create\_operator

CREATEOPERATOR[operator\_name](/stable/api/ysql/syntax_resources/grammar_diagrams#operator-name)(FUNCTION=[subprogram\_name](/stable/api/ysql/syntax_resources/grammar_diagrams#subprogram-name)PROCEDURE=[subprogram\_name](/stable/api/ysql/syntax_resources/grammar_diagrams#subprogram-name),[operator\_option](#operator-option))

#### operator\_option

LEFTARG=[left\_type](/stable/api/ysql/syntax_resources/grammar_diagrams#left-type)RIGHTARG=[right\_type](/stable/api/ysql/syntax_resources/grammar_diagrams#right-type)COMMUTATOR=[com\_op](/stable/api/ysql/syntax_resources/grammar_diagrams#com-op)NEGATOR=[neg\_op](/stable/api/ysql/syntax_resources/grammar_diagrams#neg-op)RESTRICT=[res\_proc](/stable/api/ysql/syntax_resources/grammar_diagrams#res-proc)JOIN=[join\_proc](/stable/api/ysql/syntax_resources/grammar_diagrams#join-proc)HASHESMERGES

## Semantics

See the semantics of each option in the [PostgreSQL documentation](https://www.postgresql.org/docs/15/sql-createoperator.html "PostgreSQL documentation").

## Examples

Basic example.

```plpgsql
yugabyte=# CREATE OPERATOR @#@ (
             rightarg = int8,
             procedure = numeric_fac
           );
yugabyte=# SELECT @#@ 5;
```

```output
 ?column?
----------
      120
```

## See also

- [DROP OPERATOR](/stable/api/ysql/the-sql-language/statements/ddl_drop_operator "DROP OPERATOR")
