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 "Lukas Eder (JIRA)" <ji...@apache.org> on 2012/08/04 19:40:02 UTC
[jira] [Comment Edited] (DERBY-5893) Add support for the SQL:2008
standard IS [ NOT ] DISTINCT FROM predicate
[ https://issues.apache.org/jira/browse/DERBY-5893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13428647#comment-13428647 ]
Lukas Eder edited comment on DERBY-5893 at 8/4/12 5:39 PM:
-----------------------------------------------------------
Yes, it's different in the way it handles NULLs. For example:
- (1 != NULL) yields NULL, whereas (1 IS DISTINCT FROM NULL) yields TRUE
- (NULL != NULL) yields NULL, whereas (NULL IS DISTINCT FROM NULL) yields FALSE
Here's how you could translate IS [ NOT ] DISTINCT FROM into equivalent CASE expressions:
-- A IS DISTINCT FROM B:
CASE WHEN A IS NULL AND B IS NULL THEN 0
WHEN A IS NULL AND B IS NOT NULL THEN 1
WHEN A IS NOT NULL AND B IS NULL THEN 1
WHEN A = B THEN 0
ELSE 1
END
-- A IS NOT DISTINCT FROM B:
CASE WHEN A IS NULL AND B IS NULL THEN 1
WHEN A IS NULL AND B IS NOT NULL THEN 0
WHEN A IS NOT NULL AND B IS NULL THEN 0
WHEN A = B THEN 1
ELSE 0
END
Alternatively, replace 1 and 0 by TRUE and FALSE.
was (Author: lukas.eder):
Yes, it's different in the way it handles NULLs. For example:
- (1 != NULL) yields NULL, whereas (1 IS DISTINCT FROM NULL) yields TRUE
- (NULL != NULL) yields NULL, whereas (NULL IS DISTINCT FROM NULL) yields FALSE
Here's how you could translate IS [ NOT ] DISTINCT FROM into a equivalent CASE expressions:
-- A IS DISTINCT FROM B:
CASE WHEN A IS NULL AND B IS NULL THEN 0
WHEN A IS NULL AND B IS NOT NULL THEN 1
WHEN A IS NOT NULL AND B IS NULL THEN 1
WHEN A = B THEN 0
ELSE 1
END
-- A IS NOT DISTINCT FROM B:
CASE WHEN A IS NULL AND B IS NULL THEN 1
WHEN A IS NULL AND B IS NOT NULL THEN 0
WHEN A IS NOT NULL AND B IS NULL THEN 0
WHEN A = B THEN 1
ELSE 0
END
Alternatively, replace 1 and 0 by TRUE and FALSE.
> Add support for the SQL:2008 standard IS [ NOT ] DISTINCT FROM predicate
> ------------------------------------------------------------------------
>
> Key: DERBY-5893
> URL: https://issues.apache.org/jira/browse/DERBY-5893
> Project: Derby
> Issue Type: Improvement
> Components: SQL
> Affects Versions: 10.9.1.0
> Reporter: Lukas Eder
> Priority: Minor
> Labels: features
>
> The SQL:1999 standard specifies the IS [ NOT ] DISTINCT FROM predicate in chapter 8.15 <distinct predicate>:
> <distinct predicate> ::=
> <row value predicand 3> <distinct predicate part 2>
> <distinct predicate part 2> ::=
> IS [ NOT ] DISTINCT FROM <row value predicand 4>
> <row value predicand 3> ::=
> <row value predicand>
> <row value predicand 4> ::=
> <row value predicand>
> This predicate is supported by at least these databases:
> - http://www.postgresql.org/docs/9.1/static/functions-comparison.html
> - http://www.h2database.com/html/grammar.html#condition_right_hand_side
> - http://hsqldb.org/doc/guide/ch05.html#N11BB0
> - http://dev.mysql.com/doc/refman/5.6/en/comparison-operators.html#operator_equal-to (with a different syntax)
> - http://dcx.sybase.com/1200/en/dbreference/is-distinct-from-search-condition.html
> It would probably make sense for the Derby database to implement it as well.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira