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
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
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?
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'
Es wäre trivial sqlite3 Benutzer zu implementieren Funktionen ascii() und char(), die die Konvertierungen in C oder über einen anderen Sprachwrapper ausführen, der sqlite3 Benutzerfunktionen unterstützt (zB in Python).
http://www.sqlite.org/c3ref/create_function.html
https://docs.python.org/2/library/sqlite3.html
Sie könnten Ihre eigene Version von ascii basierend auf der SQLite-Erweiterungsbibliothek implementieren, die auf dieser Seite ist: http://sqlite.1065341.n5.nabble.com/Extension-functions-for-SQLite-in-C-for-free-td18942.html
ich diesen Code geändert haben, Funktionen hinzuzufügen, nicht speziell wenn Ihr . Es sollte ziemlich einfach sein.
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 ...
ich weiß zu spät w dies ist aber:
SELECT unicode('a') --ascii('a')
SELECT char(97) --char(97)
Ich hoffe, das hilft :)
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). –