在sqlite3中用REGEXP替换字符串的一部分
我使用安装了REGEX支持在sqlite3中用REGEXP替换字符串的一部分,regex,sqlite,pcre,Regex,Sqlite,Pcre,我使用安装了REGEX支持 apt-get install sqlite3 sqlite3-pcre 现在我可以在bash控制台上的查询中使用REGEX,如 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]+$'" 但
apt-get install sqlite3 sqlite3-pcre
现在我可以在bash控制台上的查询中使用REGEX,如
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]+$'"
但是如何使用regex用sqlite查询更新字符串?默认情况下,sqlite不提供regex\u replace函数。您需要将其作为扩展加载。下面是我如何做到这一点的 使用
gcc --shared -fPIC -I sqlite-autoconf-3071100 icu_replace.c -o icu_replace.so
在SQLITE3RUNN中,以下命令所述的命令已经运行并创建了一个文件icu_replace.so
SELECT load_extension(' path to icu_replace.so', 'sqlite3_extension_init') from dual;
在此之后,您将能够使用以下功能:-
select regex_replace('\bThe\b',x,'M') from dual;
下面构建了具有动态库支持的最新sqlite,并编译和。它还假定基于debian的linux是分布式的: sudo apt build dep sqlite3获取依赖项以编译sqlite3 mkdir sqlite编译 cd sqlite编译 wget-O sqlite.tar.gzhttps://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release tar xzf sqlite.tar.gz mkdir构建 光盘制作 ../sqlite/configure make OPTS='-DSQLITE\u启用\u加载\u扩展'
./sqlite3-cmd'pragma compile_options;'你是说像regexp\u replace这样的东西?是的。就像那样。你能接受这个答案吗?这样人们就会发现它对他们的情况很有帮助。答案很好,但我没能让它发挥作用。让它编译并加载扩展,但regex_replace函数似乎总是返回第二个参数。@KevinRoth嗨kevin,很抱歉输入错误,请这样使用-从dual中选择regex_replace'\b',x,'M';我还编辑了答案。@Rubo你好,Rubo,请您接受答案,以便对具有相同查询的其他用户有所帮助。