2012-07-22 6 views
5

Gibt es irgendwelche Arbeit in sqlite, um den Mangel an "char()" und "ascii()" -Funktion zu decken?sqlite char, ascii Funktion

Zum Beispiel:

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

Nun, SQLite nicht wirklich, die für die Durchführung große Mengen an Verarbeitung nach dem Einsetzen von Daten, also warum diese Berechnung nicht in Ihrem Anrufcode? (In C, C#, Java, C++ und vielen anderen ist das lächerlich einfach). –

Antwort

4

Ich nehme an, wenn Sie wirklich wollten, können Sie eine „ASCII-Tabelle“ Wertetabelle mit einer ASCIICHAR Spalte schaffen könnte, und eine Spalte, und füllen Sie es mit dem ASCII Tabelle. Dann könnten Sie Ihre Lookups in Abfragen/Unterabfragen durchgeführt werden:

SELECT ASCIICHAR FROM ASCIITABLE WHERE ASCIICODE = 97; 

Wirklich obwohl, Richard J. Ross III Kommentar über das Geld - wenn Sie SQLite verwenden, werden Sie wahrscheinlich es durch Ihre Berufung Code zugreifen, couldn‘ Soll die Berechnung dort durchgeführt werden?

0

Obwohl Umwandlung nicht wahrscheinlich ist, tut SQLite ASCII in dieser Abfrage erkennen:

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

Mögliche Ergebnisse: 0-9 und alle ASCII < 'a'

2

Seit der Zeit, diese Frage geschrieben wurde, hat SQLite hinzugefügt offenbar eine CHAR() Funktion:

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

jedoch die nächsten, die ich in der anderen Richtung bekommen habe, ist mit der HEX() Funktion:

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

Erhalten ein Dezimal ASCII Zeichen Wert scheint es würde einige gewundene Arbeit erfordern ...

3

ich weiß zu spät w dies ist aber:

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

Ich hoffe, das hilft :)