2010-07-06 16 views
7

Was ist die einfachste Art, den Index einer Teilzeichenkette in einer varchar-Spalte zu bestimmen? charindex existiert nicht in der Aktienversion von SQLite3 - was für mich immer noch ein wenig überraschend ist.Index der Teilzeichenfolge in SQLite3?

Insbesondere habe ich eine Spalte mit Werten wie 010000, 011000, 010110 usw. ich den Index des ersten Auftretens von 11 finden möge. Für die Beispiele, die ich angegeben habe, würde ich etwas wie NULL (oder -1), 1 und 3 erwarten.

Ich habe eine gehackte Idee, die length und ltrim verwendet, aber es scheint wie viel Arbeit für etwas, was ich mehrmals tun muss.

Antwort

2

Leider glaube ich, dass Sie die einzige Antwort gefunden haben, die derzeit funktioniert. SQLite hat keine charindex-äquivalente Funktion. ein Sie Ihre eigenen machen mit Länge und Ordnung, aber nichts gebaut wird :(

+1

, die so seltsam ... Auch etwas, das nur syntaktischer Zucker ist (aber eingebaut) wäre in Ordnung. Ich frage mich, was die Gründe für * nicht * einschließlich etwas wie 'charindex' ist ... –

+2

^um es lite zu halten;) – straya

5

Dies ist nun möglich, die eingebaute instr Funktion.

sqlite> select instr(010000,11); 
0 
sqlite> select instr(011000,11); 
1 
sqlite> select instr(010110,11); 
3 
+0

sqlite 3.7.6 und darunter enthält diese Funktion nicht :( –