使用Sqlite删除在其他字符串列中找到的所有数字的SQL是什么(Oracle示例也会受到赞赏)?
示例:我想删除此条目中的所有数字:
291 HELP,1456 CALL
预期产出:
HELP,CALL
编辑:我编辑了这个问题,因为它不仅来自一个条目,我想要删除数字,还有很多。
答案 0 :(得分:2)
要么使用语言,嵌入sqlite,要么使用此SQLite代码,删除所有数字:
UPDATE table SET column = replace(column, '0', '' );
UPDATE table SET column = replace(column, '1', '' );
UPDATE table SET column = replace(column, '2', '' );
UPDATE table SET column = replace(column, '3', '' );
UPDATE table SET column = replace(column, '4', '' );
UPDATE table SET column = replace(column, '5', '' );
UPDATE table SET column = replace(column, '6', '' );
UPDATE table SET column = replace(column, '7', '' );
UPDATE table SET column = replace(column, '8', '' );
UPDATE table SET column = replace(column, '9', '' );
答案 1 :(得分:1)
select '''' || regexp_replace('123 help 321', '\d+') || '''' from dual;
答案 2 :(得分:1)
使用 TRANSLATE 和 REPLACE
SQL> WITH DATA AS(
2 SELECT '291 HELP' str FROM dual UNION ALL
3 SELECT '1456 CALL' str FROM dual
4 )
5 SELECT REPLACE(translate(str, '0123456789', ' '), ' ', NULL) str
6 FROM DATA
7 /
STR
---------
HELP
CALL
SQL>
使用 REGEXP_REPLACE
SQL> WITH DATA AS(
2 SELECT '291 HELP' str FROM dual UNION ALL
3 SELECT '1456 CALL' str FROM dual
4 )
5 SELECT trim(regexp_replace(str, '[0-9]+')) str
6 FROM DATA
7 /
STR
---------
HELP
CALL
SQL>
POSIX字符类
SQL> WITH DATA AS(
2 SELECT '291 HELP' str FROM dual UNION ALL
3 SELECT '1456 CALL' str FROM dual
4 )
5 SELECT trim(regexp_replace(str, '^[[:digit:]]+')) str
6 FROM DATA
7 /
STR
---------
HELP
CALL
SQL>
<强> Perl的扩展强>
SQL> WITH DATA AS(
2 SELECT '291 HELP' str FROM dual UNION ALL
3 SELECT '1456 CALL' str FROM dual
4 )
5 SELECT trim(regexp_replace(str, '\d+')) str
6 FROM DATA
7 /
STR
---------
HELP
CALL
SQL>