[ 
https://issues.apache.org/jira/browse/DERBY-3080?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12530536
 ] 

Mamta A. Satoor commented on DERBY-3080:
----------------------------------------

The collation of locale applies only for collation related methods and hence 
'aa' in Norway is treated as single character when used in a LIKE operation 
with _. But the collation is not taken into consideration when the LENGTH 
function is used because it is not one of the collation related methods. 

I did a quick glance through the SQL spec and didn't find LENGTH function in 
there but they do have CHAR_LENGTH Section 6.27 <numeric value expression> 
General Rules 5B)"the result is the number of explicit or implicit <char length 
units>". It appears that <char length units> is what would be used to specify 
the length of the character string literal when that character string is say 
defined using CHAR(length). 

So in Norway, the character column (say c1) definition for 'aa' will be CHAR(2) 
and looking at SQL spec, CHAR_LENGTH for that character column will return 2. 
But when column c1 is used in a collation related operation, for instance, c1 
LIKE '_', we will use the collation of the Norway locale and 'aa' will be a 
match to '_'. 

I hope this is useful.

> With TERRITORY_BASED collation, when multiple characters map to a single 
> collation element '_'  matches a single collation element rather than a 
> single character
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3080
>                 URL: https://issues.apache.org/jira/browse/DERBY-3080
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.3.1.4, 10.4.0.0
>            Reporter: Kathey Marsden
>
> '_' matches a single collation element rather than a single character if 
> multiple characters have a single collation element.  Below is an example 
> with norwegian aa  This occurs also with the patch for DERBY-2967 which 
> addresses the case of matching of a  single character having more than one 
> collation element.
> ij> connect 
> 'jdbc:derby:wombat;create=true;territory=no_NO;collation=TERRITORY_BASED';
> ij> drop table t;
> 0 rows inserted/updated/deleted
> ij> create table t (vc varchar(30));
> 0 rows inserted/updated/deleted
> ij> insert into t values('middleaavalue');
> 1 row inserted/updated/deleted
> -- The query below should match
> ij> select * from t where vc like 'middle__value';
> VC
> ------------------------------
> 0 rows selected
> -- The query below should not match.
> ij>  select * from t where vc like 'middle_value';
> VC
> ------------------------------
> middleaavalue

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to