-<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.255 2010/07/29 19:34:40 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.256 2010/08/10 20:41:27 petere Exp $ -->
<chapter id="datatype">
<title>Data Types</title>
Once created, the enum type can be used in table and function
definitions much like any other type:
- </para>
-
- <example>
- <title>Basic Enum Usage</title>
<programlisting>
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TABLE person (
Moe | happy
(1 row)
</programlisting>
- </example>
+ </para>
</sect2>
<sect2>
order in which the values were listed when the type was created.
All standard comparison operators and related
aggregate functions are supported for enums. For example:
- </para>
-
- <example>
- <title>Enum Ordering</title>
+
<programlisting>
INSERT INTO person VALUES ('Larry', 'sad');
INSERT INTO person VALUES ('Curly', 'ok');
Larry
(1 row)
</programlisting>
- </example>
+ </para>
</sect2>
<sect2>
<para>
Each enumerated data type is separate and cannot
- be compared with other enumerated types.
- </para>
+ be compared with other enumerated types. See this example:
- <example>
- <title>Lack of Casting</title>
<programlisting>
CREATE TYPE happiness AS ENUM ('happy', 'very happy', 'ecstatic');
CREATE TABLE holidays (
WHERE person.current_mood = holidays.happiness;
ERROR: operator does not exist: mood = happiness
</programlisting>
- </example>
+ </para>
<para>
If you really need to do something like that, you can either
write a custom operator or add explicit casts to your query:
- </para>
- <example>
- <title>Comparing Different Enums by Casting to Text</title>
<programlisting>
SELECT person.name, holidays.num_weeks FROM person, holidays
WHERE person.current_mood::text = holidays.happiness::text;
(1 row)
</programlisting>
- </example>
+ </para>
</sect2>
<sect2>