Mit guid in sqlite auswählen, wo guid gespeichert ist, in die sqlite-db als binaries
Ich habe eine Tabelle Employee
in der SQLite-Datenbank. Deren Primärschlüssel ist "ID" GUID geben. Ich versuche, finden Sie den Datensatz mit id
= guid 'a8828ddf-ef22-4d36-935a-1c66ae86ebb3'
mit der folgenden Abfrage mit kein Glück:
SELECT * FROM Employee
WHERE Employee.Id = 'a8828ddf-ef22-4d36-935a-1c66ae86ebb3'
Kann mir jemand sagen, wie sollte Schreibe ich die Abfrage?
Dank,
Woher weißt du, dass das die richtige ID? Kann dir nur
Ich weiß, es ist eine Zeile mit der ID in der Datenbank existiert, indem die ganze Tabelle in sqlite server-explorer in VS.
Vielleicht VS-tun Sie etwas ändern um es schön (wie das hinzufügen von Bindestrichen). Versuchen Sie, ohne Sie. Versuchen Sie es mit anderen UI-der SQLite.
Danke, aber im Allgemeinen, was die syntax Aussehen für Guid Abfragen mit sql?
Ich glaube nicht, dass es "allgemein" Weg. Es ist die Umsetzung abhängig sind. In SQLite gibt es keine harte Eingabe der Felder - Sie können darüber Lesen Sie hier sqlite.org/datatype3.html . Also es hängt davon ab, wie Sie ihn Hinzugefügt haben; es ist nur ein string - (oder Binär-Daten, hängt davon ab, wer Sie eingefügt hat). Andere Datenbanken (MySQL, MS SQL Server, Oracle, ...), können bestimmte, geben Sie für den GUID, und einige spezifische syntax zu geben.
select * from Employee
oder können Sie select * from employee where employee.id like '%8828%'
(zurückkehren können mehrere Datensätze) zu überprüfen, den Wert, der zurückgegebenIch weiß, es ist eine Zeile mit der ID in der Datenbank existiert, indem die ganze Tabelle in sqlite server-explorer in VS.
Vielleicht VS-tun Sie etwas ändern um es schön (wie das hinzufügen von Bindestrichen). Versuchen Sie, ohne Sie. Versuchen Sie es mit anderen UI-der SQLite.
Danke, aber im Allgemeinen, was die syntax Aussehen für Guid Abfragen mit sql?
Ich glaube nicht, dass es "allgemein" Weg. Es ist die Umsetzung abhängig sind. In SQLite gibt es keine harte Eingabe der Felder - Sie können darüber Lesen Sie hier sqlite.org/datatype3.html . Also es hängt davon ab, wie Sie ihn Hinzugefügt haben; es ist nur ein string - (oder Binär-Daten, hängt davon ab, wer Sie eingefügt hat). Andere Datenbanken (MySQL, MS SQL Server, Oracle, ...), können bestimmte, geben Sie für den GUID, und einige spezifische syntax zu geben.
InformationsquelleAutor sean717 | 2011-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die GUID ist wahrscheinlich wird als blob gespeichert sind; versuchen:
Versuchen Sie Folgendes: wählen Sie hex(Id) from Employee limit 10;
sean717. hast du eine Lösung gefunden?
Nähte, die Lösung ist hier stackoverflow.com/questions/1039461/...
Für jeden, der interessiert ist. Die SQLite-Manager-Add-on für Firefox, ist eine alternative zu den Server-Explorer in Visual Studio.
InformationsquelleAutor Doug Currie
Dies ist eine alte Frage, aber kommt mit sucht und während die ausgewählte Antwort richtig ist, es funktioniert möglicherweise nicht für alle leicht. Zum Beispiel, wenn Sie verwenden .NET-Bindungen zu SQLite.
Der Grund ist, dass, wenn die GUID im format
a8828ddf-ef22-4d36-935a-1c66ae86ebb3
Sie können einfach entfernen Sie die Bindestriche und stellen Sie es aufX'...'
. Die GUID ist in mehrere Teile gegliedert, und die Datenbank wird zum speichern des binären anders.Wenn die GUID ist
a8828ddf-ef22-4d36-935a-1c66ae86ebb3
wird es gespeichert in little-endian-alsX'df8d82a822ef364d5a93b3eb86ae661c'
. Beachten Sie, dass alle Teile sind vertauscht in der Zeichenfolge.Natürlich, wenn Sie die Daten einfügen, die direkt durch das entfernen der Bindestriche als
X'a8828ddfef224d36935a1c66ae86ebb3'
können Sie auch abrufen, aber wenn Sie lassen .NET behandeln die Konvertierung, die GUID gespeichert werden als little-endian-byte-Darstellung.(Dies alles meint little-endian-Architektur, getestet noch nicht auf big-endian)
InformationsquelleAutor Sami Kuhmonen