Я вставил смайлик в текстовое поле, и его длина равна 1 вместо 2, как сказал наш всемогущий javascript.
Размер смайлика:
select length(\'?\'); 'length(\'?\')': 1
Как получить SQLite длядать -cправильный- результат в -UTF8- javascript, то есть 2?
Символ смайлика состоит из двух кодовых точек UTF-16 (\ud83c\udf49) или четырех байтов UTF-8 (F0 9F 8D 89).
\ud83c\udf49
F0 9F 8D 89
Функция Javascript length возвращает номер UTF-16кодовые точки для строки:
length
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length
Функция SQLite length возвращает количество символов в строке:
https://www.sqlite.org/lang_corefunc.html#length
Другими словами: это две разные функции.
Если вы используете длину строки в байтах, вы можете использовать:
select length(cast('?' as BLOB))
Вывод:
4
Вероятно, лучше сделать шаг назад и посмотреть, чего вы на самом деле хотите достичь;может быть, есть другой подход.