2012-07-22 4 views
5

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 
+4

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). –

Odpowiedz

4

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?

0

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'

2

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 ...

3

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 :)