Czy jest jakieś pracy w sqlite na pokrycie brak funkcji "char()" i "ascii()"?sqlite char, funkcja ascii
Na przykład:
char(97) => 'a'
ascii('a') => 97
Czy jest jakieś pracy w sqlite na pokrycie brak funkcji "char()" i "ascii()"?sqlite char, funkcja ascii
Na przykład:
char(97) => 'a'
ascii('a') => 97
Przypuszczam, jeśli naprawdę chce, można utworzyć „ASCII tabeli” Tabela wartości z kolumny ASCIICHAR
, a kolumna i wypełnić go z ASCII stół. Następnie odpytywanie może być wykonywana w zapytaniach/podzapytania:
SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97;
Naprawdę jednak komentarz Richard J. Ross III jest na pieniądze - jeśli używasz SQLite, prawdopodobnie dostępu do niego za pośrednictwem kodu wywołującego, mogłem” t obliczenia są tam wykonywane?
Chociaż konwersja nie jest prawdopodobne, SQLite rozpoznaje ASCII w tego zapytania:
select * from segments where substr(name, 1, 1) < 'A' or substr(name, 1, 1) > 'Z' and substr(name, 1, 1) < 'a';
Możliwe wyniki: 0-9 i wszystko ASCII < 'a'
byłoby trywialne do realizacji sqlite3 użytkownikowi funkcje ascii() i char(), które wykonują konwersje w języku C lub innym opakowaniu językowym obsługującym funkcje użytkownika sqlite3 (np. w pythonie).
http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html
Można zaimplementować własną wersję ASCII oparte na sqlite biblioteki rozszerzenie, które na tej stronie: http://sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free-td18942.html
Mam zmodyfikowanej ten kod, aby dodać funkcje, które nie zostały do ciebie choć . Powinno być całkiem proste.
Od czasu kwestia ta została napisana, SQLite ewidentnie dodał CHAR()
funkcję:
SELECT CHAR(97) -- Result is 'a'
Jednak najbliżej stałam w drugim kierunku jest z HEX()
funkcję:
SELECT HEX('a') -- Result is 61 (hexadecimal, is equal to 97 decimal)
Uzyskanie wartości liczb dziesiętnych ASCII
wydaje się wymagać pewnych zawiłych prac ...
I kno W To jest zbyt późno, ale:
SELECT unicode('a') --ascii('a')
SELECT char(97) --char(97)
Mam nadzieję, że to pomoże :)
Dobrze, SQLite naprawdę nie jest przeznaczony do wykonywania ogromnej ilości przetwarzania po wprowadzeniu danych, więc dlaczego nie zrobić tego obliczenia w swojej dzwoniący kod? (W języku C, C#, Java, C++ i wielu innych jest to absurdalnie łatwe). –