sql - How to select rows with only Numeric Characters in Oracle SQL
问题描述
I would like to keep rows only with Numeric Character i.e. 0-9. My source data can have any type of character e.g. 2,%,( .
Input (postcode)
3453gds sdg3
454232
sdg(*d^
452
Expected Output (postcode)
454232
452
I have tried using WHERE REGEXP_LIKE(postcode, '^[[:digit:]]+$');
however in my version of Oracle I get an error saying
function regexp_like(character varying, "unknown") does not exist
解决方案
ForOracle 10
或更高版本,您可以使用regexp
函数。在早期版本中,翻译功能将帮助您:
SELECT postcode
FROM table_name
WHERE length(translate(postcode,'0123456789','1')) is null
AND postcode IS NOT NULL;
或者
SELECT translate(postcode, '0123456789' || translate(postcode,'x123456789','x'),'0123456789') nums
FROM table_name ;
上面的答案也适用于我
SELECT translate('1234bsdfs3@23##PU', '0123456789' || translate('1234bsdfs3@23##PU','x123456789','x'),'0123456789') nums
FROM dual ;
Nums:
1234323
推荐阅读
- c# - 找不到运行时DLL(coreclr.dll),0x80004005
- ios - 对象不使用弱引用解除分配
- reactjs - React Next.js - 关于 SSR 模式的三个相关问题
- python - Python/Numpy:在二维数组中按行组合布尔掩码
- android-studio - 模拟器进程在 Android Studio 中立即被杀死
- javascript - document.getElementById().onclick 在 Google 跟踪代码管理器中不起作用
- java - 使用长轮询的 Java RMI 回调
- reactjs - apollo 客户端在创建页面时给出错误 500
- flutter - 如何解决方法 '<' 在 null 上被调用。接收者:null 尝试调用:<(0.0)?
- tensorflow - Keras EfficientNet 迁移学习代码示例不起作用