-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Case-insensitive string comparison #21
Comments
Internal ticket: https://yt.mobilexag.de/issue/PRDXMIP-921 Old ID: 19.4 (case-insensitive comparison) |
FYI I had also raised storesafe/cordova-sqlite-evcore-extbuild-free#50 to track this "quick fix" enhancement. This "quick fix" enhancement should now be done in merged PR #17. I would like to discuss any further enhancements such as using the real ICU library, collation updates, and updates to built-in LIKE function (SQLite FAQ #18) in a new issue, if desired at some point. At this point the browser platform does not have this feature done, as I have tracked in #27. Initial quick fix was raised here: brodycj/sqlite-evcustom-browser-memory-storage-ext-free#2. Will be part of long-term warranty/support/update plan (#24). @DanielSWolf I would like to close this issue if you agree it is delivered OK for the other platforms (Android/iOS/Windows). |
to code & documentation - add references for EU character mappings - mobilexag/cordova-sqlite-evplus-ext-free#21 - storesafe/cordova-sqlite-evcore-extbuild-free#50 (comment) - update documentation of known issue with SELECT LOWER_EU(9e999) & SELECT LOWER_EU(-9e999)
to code & documentation - add references for EU character mappings - mobilexag/cordova-sqlite-evplus-ext-free#21 - storesafe/cordova-sqlite-evcore-extbuild-free#50 (comment) - update documentation of known issue with SELECT LOWER_EU(9e999) & SELECT LOWER_EU(-9e999)
to code & documentation - add references for EU character mappings - mobilexag/cordova-sqlite-evplus-ext-free#21 - storesafe/cordova-sqlite-evcore-extbuild-free#50 (comment) - add reference to cordova-sqlite-storage test suite from: - https://github.com/storesafe/cordova-sqlite-storage/tree/6.0.0/spec - update documentation of known issue with SELECT LOWER_EU(9e999) & SELECT LOWER_EU(-9e999)
to code & documentation - add references for EU character mappings - mobilexag/cordova-sqlite-evplus-ext-free#21 - storesafe/cordova-sqlite-evcore-extbuild-free#50 (comment) - add reference to cordova-sqlite-storage test suite from: - https://github.com/storesafe/cordova-sqlite-storage/tree/6.0.0/spec - add reference to: - https://www.compart.com/en/unicode/U+0131 - test one-way U+0131 (`ı`) -> capital I - update reproduction & documentation of known issue with U+0131 (`ı`) & capital I
Many of the strings in our database contain non-Unicode characters. For the German market, these are primarily the Umlauts “ä”, “ö”, and “ü”, but we also have international customers with other common special characters. The problem is that by default, case-insensitive matching only works for ASCII characters (see this FAQ entry). So whenever we do case-insensitive string matching using
like
, we get false negatives for non-ASCII characters.According the the FAQ entry, there is an “ICU” extension that fixes that, but that dramatically increases the library size (and, as discussed, would be very time-consuming to integrate).
As a quick fix, we've agreed to override the buit-in SQLite functions lower() and upper() so that they support the following fixed set of non-ASCII characters:
This allows us to perform querys like
... where upper(description) like upper(query)
.The text was updated successfully, but these errors were encountered: