我尝试提取字符串中的数字和特殊字符,如何在SQL中做到这一点? (SQLite)
使用FORMAT()有办法吗?用REPLACE()?
我搜索[@ $!%*?&/]和[0-9]数字...
字符串:
Rue des cocotiers, 9/11
结果:
9/11
谢谢
答案 0 :(得分:1)
这通常是一个正则表达式解决方案,但是尽管sqlite现在可以在WHERE子句中运行REGEXP表达式,但它尚未实现在更全面的SQL实现中发现的标准regexp_replace函数。
How to use REGEXP in SQLite3 to extract matched string (as a column value)
要运行这样的表达式:
SELECT trim(regexp_replace(threeload.title, '\b([\d*#+\/]+)\b')) str
FROM threeload
WHERE threeload.title REGEXP '\b([\d*#+\/]+)\b';
您首先需要使用其他功能重新编译sqlite,也许像此答案中概述的那样:
https://stackoverflow.com/a/44586265/10890850
以下是删除它的步骤(不是我的回答,请给原始答复任何投票):
默认情况下,Sqlite不提供regex_replace函数。您 需要将其作为扩展加载。这是我设法做到的方式。
Download this C code for the extension (icu_replace)
使用
进行编译gcc --shared -fPIC -I sqlite-autoconf-3071100 icu_replace.c -o icu_replace.so
在sqlite3 runn下面的命令中 提到的命令已运行并创建文件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;