Specifying a Collating Order with SET COLLATION

SET COLLATION replaces the current collating order for NCHAR and NVARCHAR values with that of the specified locale for all database servers previously accessed in the current session.

For example, this statement specifies the collating order for the GB18030-2000 code set of the Chinese language:
EXEC SQL set collation "zh_cn.gb18030-2000";

If the next operation of a database server in this session sorted NCHAR or NVARCHAR values, the result would follow the Chinese collating order that the SET COLLATION statement specified.

Suppose that in the same session, the following SET NO COLLATION statement restores the DB_LOCALE setting for the collating order:
EXEC SQL set no collation;

After SET NO COLLATION executes, subsequent collation in the same session is based on the DB_LOCALE setting. Any database objects that you created using the Chinese collating order, however, such as check constraints, indexes, prepared objects, triggers, or UDRs, will continue to apply Chinese collation rules to NCHAR and NVARCHAR data types.

Collation in an NLSCASE INSENSITIVE database

Suppose that you use the following SET COLLATION statement to replaces the current collating order with that of the de_de.8859-1 locale for the German language:
SET COLLATION "de_de.8859-1";
By default, this locale supports case differences between uppercase and lowercase alphabetic characters. For example, two CHAR or LVARCHAR strings of the same letters and in the same order, but with differences in case, such as 'Zug' and 'ZUG', are treated in LIKE or MATCHES expressions or sorted in ORDER BY clauses as distinct data values.

In a database created with the NLSCASE INSENSITIVE keywords, however, collating operations on NCHAR and NVARCHAR data disregard case differences, so that the database server treats case variants among strings composed of same sequence letters as duplicates. The resulting collated list orders these case-insensitive duplicates in their order of retrieval, so a collated list with case variants of the string alpha might appear in any order, such as this order, which disregards variations in case:

alpha
Alpha
alpha
ALPHA
Alpha

For more information, see Duplicate rows in NLSCASE INSENSITIVE databases and NCHAR and NVARCHAR expressions in case-insensitive databases.