Subject | Re: How to specify which UPPER() to be called |
---|---|
Author | peter_jacobi.rm |
Post date | 2003-06-23T11:26:29Z |
Hi Helen, Dmitry, all,
Thank you for your quick answers, but the problem
resists to be solved so for.
Helen's suggestion
select c from t where UPPER(c) = UPPER( _ISO8859_1 'Füße');
didn't work and I suppose it can't work because it doesn't
specify a collation and uppercasing is by collation, not by
character set.
In addition another strange problem surfaced - when trying
to see what happens, I entered
select c,UPPER(c),UPPER(_ISO8859_1 'Füße') from t;
This gave an error message:
Statement failed, SQLCODE = -802
arithmetic exception, numeric overflow, or string truncation
-Cannot transliterate character between character sets
(In the WHERE clause, UPPER(_ISO8859_1 'Füße') gave no error
message)
Dmitry's solution:
select c from t where UPPER(c) = UPPER('Füße' collate de_de);
gave an error message
-SQL error code = -204
-Data type unknown
-COLLATION DE_DE is not valid for specified CHARACTER SET
which seems somewhat logical, as I'm working with SET NAMES DOS437.
So I looked for a way to merge character set and collation
specification, but UPPER(_ISO8859_1 'Füße' collate de_de)
didn't work either.
For this specific test, finally that line worked:
select c from t where UPPER(c) = UPPER('Füße' collate DB_DEU437);
But this depends on the vague hope, that DOS437::DB_DEU437 and
ISO8859_1::DE_DE agree in all cases of uppercasing.
Regards,
Peter Jacobi
Thank you for your quick answers, but the problem
resists to be solved so for.
Helen's suggestion
select c from t where UPPER(c) = UPPER( _ISO8859_1 'Füße');
didn't work and I suppose it can't work because it doesn't
specify a collation and uppercasing is by collation, not by
character set.
In addition another strange problem surfaced - when trying
to see what happens, I entered
select c,UPPER(c),UPPER(_ISO8859_1 'Füße') from t;
This gave an error message:
Statement failed, SQLCODE = -802
arithmetic exception, numeric overflow, or string truncation
-Cannot transliterate character between character sets
(In the WHERE clause, UPPER(_ISO8859_1 'Füße') gave no error
message)
Dmitry's solution:
select c from t where UPPER(c) = UPPER('Füße' collate de_de);
gave an error message
-SQL error code = -204
-Data type unknown
-COLLATION DE_DE is not valid for specified CHARACTER SET
which seems somewhat logical, as I'm working with SET NAMES DOS437.
So I looked for a way to merge character set and collation
specification, but UPPER(_ISO8859_1 'Füße' collate de_de)
didn't work either.
For this specific test, finally that line worked:
select c from t where UPPER(c) = UPPER('Füße' collate DB_DEU437);
But this depends on the vague hope, that DOS437::DB_DEU437 and
ISO8859_1::DE_DE agree in all cases of uppercasing.
Regards,
Peter Jacobi