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
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
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ì?
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'
Sarebbe banale da implementare utente sqlite3 funzioni ascii() e char() che eseguono le conversioni in C o attraverso un altro wrapper per lingue che supporta le funzioni utente di sqlite3 (ad es. in python).
http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html
Si potrebbe implementare la propria versione di ASCII basato sulla libreria estensione SQLite che si trova su questo sito: http://sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free-td18942.html
Ho modificato il codice per aggiungere funzioni, non specificamente vostro però . Dovrebbe essere piuttosto semplice.
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 ...
I kno w questo è troppo tardi, ma:
SELECT unicode('a') --ascii('a')
SELECT char(97) --char(97)
Spero che questo aiuta :)
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). –