SQLite char, функция ascii
есть ли какая-либо работа в sqlite, чтобы покрыть отсутствие функции "char()" и "ascii ()"?
например:
char(97) => 'a'
ascii('a') => 97
7 ответов
Я полагаю, если бы вы действительно хотели, вы могли бы создать таблицу значений "ASCII Table" с и ASCIICODE
столбец и заполните его таблицей ASCII. Тогда ваши поиски могут быть выполнены в запросы / подзапросы:
SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97;
на самом деле, комментарий Ричарда Дж. Росса III касается денег - если вы используете SQLite, вы, вероятно, получаете доступ к нему через свой вызывающий код, не может ли вычисление быть сделано там?
Я знаю, что это слишком поздно, но:
SELECT unicode('a') --ascii('a')
SELECT char(97) --char(97)
надеюсь, это поможет:)
С момента написания этого вопроса SQLite, очевидно, добавил CHAR()
функция:
SELECT CHAR(97) -- Result is 'a'
тем не менее, ближе всего я получил в другом направлении с :
SELECT HEX('a') -- Result is 61 (hexadecimal, is equal to 97 decimal)
получение десятичного знака ASCII
значение символа, похоже, потребует некоторой запутанной работы...
хотя преобразование маловероятно, sqlite распознает ASCII в этом запросе:
select * from segments where substr(name, 1, 1) < 'A' or substr(name, 1, 1) > 'Z' and substr(name, 1, 1) < 'a';
возможные результаты: 0-9 и все ASCII
было бы тривиально реализовать пользовательские функции sqlite3 ascii() и char (), которые выполняют преобразования в C или через другую языковую оболочку, поддерживающую пользовательские функции sqlite3 (например, в python).
http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html
вы можете реализовать свою собственную версию ascii на основе библиотеки расширений sqlite, которая находится на этом сайте: http://sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free-td18942.html
Я изменил этот код, чтобы добавить функции, не конкретно ваши. Это должно быть довольно просто.
для более старых версий используйте cast(X'61' в качестве текста) вместо char (97). 61-шестнадцатеричное prepresentation из 97.