mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-01 19:45:33 +08:00
<example> is a floating element, so it's use is inappropriate when the
surrounding text refers to the example inline.
This commit is contained in:
parent
20bf5e03e5
commit
6d5afc2003
@ -1,4 +1,4 @@
|
||||
<!-- $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>
|
||||
@ -2877,10 +2877,6 @@ CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
|
||||
|
||||
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 (
|
||||
@ -2894,7 +2890,7 @@ SELECT * FROM person WHERE current_mood = 'happy';
|
||||
Moe | happy
|
||||
(1 row)
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
@ -2905,10 +2901,7 @@ SELECT * FROM person WHERE current_mood = 'happy';
|
||||
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');
|
||||
@ -2934,7 +2927,7 @@ WHERE current_mood = (SELECT MIN(current_mood) FROM person);
|
||||
Larry
|
||||
(1 row)
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
@ -2942,11 +2935,8 @@ WHERE current_mood = (SELECT MIN(current_mood) FROM person);
|
||||
|
||||
<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 (
|
||||
@ -2962,15 +2952,12 @@ SELECT person.name, holidays.num_weeks FROM person, 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;
|
||||
@ -2980,7 +2967,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
|
||||
(1 row)
|
||||
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
|
Loading…
Reference in New Issue
Block a user