aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/charset.sgml58
-rw-r--r--doc/src/sgml/ref/create_collation.sgml13
-rw-r--r--doc/src/sgml/ref/create_database.sgml4
3 files changed, 62 insertions, 13 deletions
diff --git a/doc/src/sgml/charset.sgml b/doc/src/sgml/charset.sgml
index dd092fddd61..25febcac4c0 100644
--- a/doc/src/sgml/charset.sgml
+++ b/doc/src/sgml/charset.sgml
@@ -1481,7 +1481,7 @@ SELECT 'x-y' = 'x_y' COLLATE level4; -- false
</sect3>
<sect3 id="icu-locale-examples">
- <title>Examples</title>
+ <title>Collation Settings Examples</title>
<variablelist>
<varlistentry id="collation-managing-create-icu-de-u-co-phonebk-x-icu">
@@ -1530,6 +1530,62 @@ SELECT 'x-y' = 'x_y' COLLATE level4; -- false
</variablelist>
</sect3>
+ <sect3 id="icu-tailoring-rules">
+ <title>ICU Tailoring Rules</title>
+
+ <para>
+ If the options provided by the collation settings shown above are not
+ sufficient, the order of collation elements can be changed with tailoring
+ rules, whose syntax is detailed at <ulink
+ url="https://unicode-org.github.io/icu/userguide/collation/customization/"></ulink>.
+ </para>
+
+ <para>
+ This small example creates a collation based on the root locale with a
+ tailoring rule:
+<programlisting>
+<![CDATA[CREATE COLLATION custom (provider = icu, locale = 'und', rules = '&V << w <<< W');]]>
+</programlisting>
+ With this rule, the letter <quote>W</quote> is sorted after
+ <quote>V</quote>, but is treated as a secondary difference similar to an
+ accent. Rules like this are contained in the locale definitions of some
+ languages. (Of course, if a locale definition already contains the
+ desired rules, then they don't need to be specified again explicitly.)
+ </para>
+
+ <para>
+ Here is a more complex example. The following statement sets up a
+ collation named <literal>ebcdic</literal> with rules to sort US-ASCII
+ characters in the order of the EBCDIC encoding.
+
+<programlisting>
+<![CDATA[CREATE COLLATION ebcdic (provider = icu, locale = 'und',
+rules = $$
+& ' ' < '.' < '<' < '(' < '+' < \|
+< '&' < '!' < '$' < '*' < ')' < ';'
+< '-' < '/' < ',' < '%' < '_' < '>' < '?'
+< '`' < ':' < '#' < '@' < \' < '=' < '"'
+<*a-r < '~' <*s-z < '^' < '[' < ']'
+< '{' <*A-I < '}' <*J-R < '\' <*S-Z <*0-9
+$$);]]>
+
+SELECT c
+FROM (VALUES ('a'), ('b'), ('A'), ('B'), ('1'), ('2'), ('!'), ('^')) AS x(c)
+ORDER BY c COLLATE ebcdic;
+ c
+---
+ !
+ a
+ b
+ ^
+ A
+ B
+ 1
+ 2
+</programlisting>
+ </para>
+ </sect3>
+
<sect3 id="icu-external-references">
<title>External References for ICU</title>
diff --git a/doc/src/sgml/ref/create_collation.sgml b/doc/src/sgml/ref/create_collation.sgml
index b86a9bbb9ce..5cf9777764b 100644
--- a/doc/src/sgml/ref/create_collation.sgml
+++ b/doc/src/sgml/ref/create_collation.sgml
@@ -165,9 +165,8 @@ CREATE COLLATION [ IF NOT EXISTS ] <replaceable>name</replaceable> FROM <replace
<listitem>
<para>
Specifies additional collation rules to customize the behavior of the
- collation. This is supported for ICU only. See <ulink
- url="https://unicode-org.github.io/icu/userguide/collation/customization/"/>
- for details on the syntax.
+ collation. This is supported for ICU only. See <xref
+ linkend="icu-tailoring-rules"/> for details.
</para>
</listitem>
</varlistentry>
@@ -257,12 +256,8 @@ CREATE COLLATION german_phonebook (provider = icu, locale = 'de-u-co-phonebk');
<programlisting>
<![CDATA[CREATE COLLATION custom (provider = icu, locale = 'und', rules = '&V << w <<< W');]]>
</programlisting>
- With this rule, the letter <quote>W</quote> is sorted after
- <quote>V</quote>, but is treated as a secondary difference similar to an
- accent. Rules like this are contained in the locale definitions of some
- languages. (Of course, if a locale definition already contains the desired
- rules, then they don't need to be specified again explicitly.) See the ICU
- documentation for further details and examples on the rules syntax.
+ See <xref linkend="icu-tailoring-rules"/> for further details and examples
+ on the rules syntax.
</para>
<para>
diff --git a/doc/src/sgml/ref/create_database.sgml b/doc/src/sgml/ref/create_database.sgml
index b2c8aef1ad2..ce7317f81ba 100644
--- a/doc/src/sgml/ref/create_database.sgml
+++ b/doc/src/sgml/ref/create_database.sgml
@@ -232,9 +232,7 @@ CREATE DATABASE <replaceable class="parameter">name</replaceable>
<para>
Specifies additional collation rules to customize the behavior of the
default collation of this database. This is supported for ICU only.
- See <ulink
- url="https://unicode-org.github.io/icu/userguide/collation/customization/"/>
- for details on the syntax.
+ See <xref linkend="icu-tailoring-rules"/> for details.
</para>
</listitem>
</varlistentry>