2012-07-22 8 views
5

C'è qualche problema con sqlite da coprire per la mancanza della funzione "char()" e "ascii()"?charlite sqlite, funzione ascii

Ad esempio:

char(97) => 'a' 
ascii('a') => 97 
+4

Beh, SQLite non è realmente destinato per l'esecuzione di grandi quantità di trasformazione dopo l'inserimento dei dati, quindi perché non fare questo calcolo nella tua chiamare il codice? (In C, C#, Java, C++ e molti altri, è ridicolmente facile). –

risposta

4

suppongo, se si voleva davvero, si potrebbe creare una tabella "Tabella ASCII" di valori con una colonna ASCIICHAR, e una colonna , e popolarlo con l'ASCII tavolo. Allora i vostri ricerche potrebbero essere eseguite in query/sottointerrogazioni:

SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97; 

realtà, però, il commento di Richard J. Ross III è sui soldi - se si utilizza SQLite, si sono probabilmente accede attraverso il vostro codice chiamante, couldn' il calcolo sarà fatto lì?

0

Anche se la conversione non è probabile, SQLite riconosce ASCII in questa query:

select * from segments where substr(name, 1, 1) < 'A' or substr(name, 1, 1) > 'Z' and substr(name, 1, 1) < 'a'; 

possibili risultati: 0-9 e tutto ASCII < 'a'

2

Poiché il tempo a questa domanda è stato scritto, SQLite ha evidentemente aggiunto una funzione CHAR():

SELECT CHAR(97) -- Result is 'a' 

Tuttavia, il più vicino ho ottenuto nella direzione opposta è con la funzione HEX():

SELECT HEX('a') -- Result is 61 (hexadecimal, is equal to 97 decimal) 

Ottenere un valore decimale ASCII sembra come richiederebbe un lavoro contorto ...

3

I kno w questo è troppo tardi, ma:

SELECT unicode('a') --ascii('a') 
SELECT char(97)  --char(97) 

Spero che questo aiuta :)