2017-10-21 1 views
0

Ich habe eine Zeile in einer Tabelle mit dem Wert von "2005/Mom's Birthday Pie/P9160566_1.JPG".sqlite3 select query keine Zeile mit einem einzigen Zitat

Ich versuche, diese Zeile wählen Sie die folgende Anweisung sqlite3 auf Mac 10.13 am Terminal ab:

'select RKMaster.fileName from RKMaster where RKMaster.imagePath = "2005/Mom''s Birthday Pie/P9160566_1.JPG"' 

Aber es gibt ein leeres Ergebnis. Ich weiß, dass die Zeile existiert, weil ich den Anwendung DB Browser für SQLite benutzen kann, um auf die imagePath Spalte mit dem Wert "Mom's Birthday Pie/P9160566_1.JPG" zu filtern (ohne dem '' zu entkommen) und ich sehe die Reihe, die ich suche.

Was mache ich falsch mit meiner SQLite3-Abfrage?

+1

Funktioniert 'LIKE' statt' = '? –

+0

@ CL. Nein, das funktioniert nicht .. ABER, danke für den Vorschlag .. Wenn ich LIKE benutze und auch die 'für den Platzhalter% ersetze, funktioniert es! ''wählen RKMaster.fileName aus RKMaster wobei RKMaster.imagePath wie" 2005/Mom% s Geburtstag Pie/P9160566_1.JPG "' –

+0

Was ist die Ausgabe von' SELECT hex (imagePath) FROM RKMaster WHERE ... 'für diese Reihe? –

Antwort

0

Innerhalb einer Zeichenfolge müssen Anführungszeichen verdoppelt werden, um sie zu vermeiden. Aber das gilt nur für jene Angebote, die tatsächlich die Zeichenfolge abgrenzen:

'Mom''s' 
"Mom""s" 
'Mom"s' 
"Mom's" 

(doppelte Anführungszeichen sind nicht für die String-Werte bestimmt sind, sollten sie nur für die Tabelle/Spaltennamen verwendet werden, und werden von SQLite nur für Fehler akzeptiert -Kompatibilität mit MySQL.)

+0

Ok. Aber in meinem Fall begrenze ich die Zeichenkette mit doppelten Anführungszeichen: "Wenn ich dem inneren einfachen Anführungszeichen in Mom's nicht entfliehe, dann wenn ich Return am Terminal drücke, wird der Befehl nicht ausgeführt, sondern wartet weiter auf die Eingabe. Ich habe versucht, die "mit einem Backslash" zu entkommen, aber das funktioniert auch nicht. –

+0

'Wählen Sie" '";' funktioniert für mich. –