Namespace-wide Default Collation
Each namespace has a current string collation setting. This string collation is defined for the data type in %Library.StringOpens in a new tab. The default is SQLUPPER. This default can be changed.
You can define the collation default on a per-namespace basis. By default, namespaces have no assigned collation, which means they use SQLUPPER collation. You can assign a different default collation to a namespace. This namespace default collation applies to all processes, and persists across InterSystems IRIS restarts until explicitly reset.
SET stat=$$GetEnvironment^%apiOBJ("collation","%Library.String",.collval)
WRITE "initial collation for ",$NAMESPACE,!
ZWRITE collval
SetNamespaceCollation
DO SetEnvironment^%apiOBJ("collation","%Library.String","SQLstring")
SET stat=$$GetEnvironment^%apiOBJ("collation","%Library.String",.collnew)
WRITE "user-assigned collation for ",$NAMESPACE,!
ZWRITE collnew
ResetCollationDefault
DO SetEnvironment^%apiOBJ("collation","%Library.String",.collval)
SET stat=$$GetEnvironment^%apiOBJ("collation","%Library.String",.collreset)
WRITE "restored collation default for ",$NAMESPACE,!
ZWRITE collreset
Note that if you have never set the namespace collation default, $$GetEnvironment returns an undefined collation variable, such as .collval in this example. This undefined collation defaults to SQLUPPER.
Note:
If your data contains German text, uppercase collation may not be a desirable default. This is because the German eszett character ($CHAR(223)) has only a lowercase form. The uppercase equivalent is the two letters “SS”. SQL collations that convert to uppercase do not convert eszett, which remains unchanged as a single lowercase letter.