2016-08-10 4 views
6

installierte ich REGEX Unterstützung miteinen Teil einer Zeichenfolge mit REGEXP ersetzen in sqlite3

apt-get install sqlite3 sqlite3-pcre 

jetzt kann ich REGEX in meinen Fragen auf der Bash-Konsole wie

DB="somedb.db" 
REGEX_EXTENSION="SELECT load_extension('/usr/lib/sqlite3/pcre.so');" 
sqlite3 $DB "$REGEX_EXTENSION select * from sometable where name REGEXP '^[a-z]+$'" 

verwende Aber wie kann ich aktualisieren eine Zeichenfolge mit einer SQLite-Abfrage mit Regex?

+0

Sie meinen etwas wie regexp_replace()? –

+0

Ja. So wie das. – rubo77

Antwort

3

Sqlite bietet standardmäßig keine regex_replace-Funktion. Sie müssen es als Erweiterung laden. Hier ist, wie ich es geschafft habe.

Download this C code for the extension (icu_replace)

Kompilieren es

mit
gcc --shared -fPIC -I sqlite-autoconf-3071100 icu_replace.c -o icu_replace.so 

Und in sqlite3 runn folgenden Befehl ein Beitrag oben genannten Befehl ausgeführt wurde und eine Datei erstellen icu_replace.so

SELECT load_extension(' path to icu_replace.so', 'sqlite3_extension_init') from dual; 

Danach werden Sie Eine solche Funktion kann wie folgt verwendet werden: -

select regex_replace('\bThe\b',x,'M') from dual; 
+0

Gute Antwort, aber ich konnte es nicht zur Arbeit bringen. Habe es kompiliert und die Erweiterung geladen, aber die Funktion regex_replace() scheint immer den zweiten Parameter zurückzugeben. –

+0

@KevinRoth Hallo Kevin, Entschuldigung für den Tippfehler, verwenden Sie es so - wählen Sie regex_replace ('\ bThe \ b', x, 'M') von Dual; Ich habe auch die Antwort bearbeitet. –

Verwandte Themen