You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Mamta A. Satoor (JIRA)" <ji...@apache.org> on 2007/10/31 19:41:51 UTC

[jira] Commented: (DERBY-3166) Update docs to address code improvments to LIKE (see Derby-2967)

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

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

Thanks for working on the documentation part of DERBY-2967. I hope following information will be useful to you

**********************************************************
The following applies to territory based database
For LIKE, when comparing a pattern against a value string, we do the comparison of collation elements(s) for one character at a time for non-metacharacters. This is different than what is done for = operation. For =, we compare the collation elements for the entire string on left hand with the collation elements of the entire string on the right hand side.
For eg say we are working with a territory where character 'z' has same collation elements as 'xy'. For such a territory consider 2 clauses in WHERE clause
1)'zcb' = 'xycb' 
2)'zcb' LIKE 'xy_b'
For case 1), we will return TRUE because the collation elements for the entire string 'zcb' will match the collation elements of the entire string 'xycb'.
For case 2) though, we will return FALSE because collation element(s) for character 'z' does not match the collation element(s) for character 'x'. So, as can be seen, the LIKE operation is one character at a time whereas = operation is the entire string at a time. 
In addition,  the metacharacter _ in pattern for LIKE will consume *one* character in the string value. So for an eg clause 'xycb' LIKE '_cb' will return FALSE because metacharacter _ will consume 'x' and since 'c' does not match 'y', we will return FALSE.
**********************************************************

**********************************************************
The following applies to UCS_BASIC database
Also, just to be clear, in a UCS_BASIC database, for all of the 3 cases above, we will return FALSE because the comparison in UCS_BASIC is based on code point. So for test cases 1 and 2, since the code point for 'z' does not match the code point for 'x', we will return FALSE. And for test case 3, 'x' will be consumed by '_' but the code point for 'y' does not match the code point for 'c' and hence we will return FALSE.
**********************************************************

Hope this helps with your effort of documenting this.


> Update docs to address code improvments to LIKE (see Derby-2967)
> ----------------------------------------------------------------
>
>                 Key: DERBY-3166
>                 URL: https://issues.apache.org/jira/browse/DERBY-3166
>             Project: Derby
>          Issue Type: Bug
>          Components: Documentation
>            Reporter: Laura Stewart
>            Assignee: Laura Stewart
>
> Implement the required doc changes for collation to address the improvements to the LIKE operator.

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