SQLite

View Ticket
Login
Ticket Hash: fa146dcfe625f6f2de0b10bb7bfa66ee7abef7a9
Title: Unexpected result for MIN on string that contains a null character
Status: Fixed Type: Documentation
Severity: Minor Priority: Low
Subsystem: Unknown Resolution: Fixed
Last Modified: 2020-03-06 00:15:57
Version Found In: 3.32.0
User Comments:
mrigger added on 2020-03-05 16:37:44: (text/x-fossil-wiki)
I believe that the two queries listed below should yield a consistent result; however, he first fetches '0000', while the second fetches '0001':

<pre>
SELECT HEX(MIN(a)) FROM (SELECT CHAR(0, 1) COLLATE NOCASE as a UNION SELECT CHAR(0, 0) as a); -- 0000
SELECT HEX(MIN(a)) FROM (SELECT CHAR(0, 0) COLLATE NOCASE as a UNION SELECT CHAR(0, 1) as a); -- 0001
</pre>

This issue seems to only affect COLLATE NOCASE.

drh added on 2020-03-06 00:15:57: (text/x-fossil-wiki)
Simpler test case:

<blockquote><verbatim>
SELECT char(0,1)=char(0,2) COLLATE NOCASE;
</verbatim></blockquote>

The issue here is that the NOCASE collating function stops its
comparison at the first zero character it sees.  This fact has
been clarified in the documentation.  See documentation
check-in [https://www.sqlite.org/docsrc/info/e751b0c91a80dd31]