[英]How to extract a digit from number in oracle
请帮助查询如何在 oracle 中使用 SQL 从下表中提取数字“1”。
桌子 |
---|
1000 |
1001 |
1010 |
0100 |
预期结果 ;
桌子 |
---|
1 |
11 |
11 |
1 |
您可以使用简单的字符串函数TRANSLATE
(比正则表达式更快):
SELECT TRANSLATE(value, '10', '1') AS result
FROM table_name
如果您有多个二进制数字,则:
SELECT TRANSLATE(value, '1023456789.', '1') AS result
FROM table_name
其中,对于样本数据:
CREATE TABLE table_name (value) AS
SELECT '1000' FROM DUAL UNION ALL
SELECT '1001' FROM DUAL UNION ALL
SELECT '1010' FROM DUAL UNION ALL
SELECT '0100' FROM DUAL;
两个输出:
结果 1 11 11 1
db<> 在这里摆弄
我希望你给我们一个简化版本的问题? 实现此目的的一种方法是使用REGEXP_REPLACE
将除字符1
之外的所有字符替换为空格:
SELECT
REGEXP_REPLACE(YOUR_COLUMN,'[^1]','') AS DESIRED_RESULT
FROM YOUR_TABLE
你可以看看这个例子: db<>fiddle
您可以使用 regexp_replace:
WITH dat AS
(
SELECT '1000' AS numb FROM dual UNION ALL
SELECT '1001' FROM dual UNION ALL
SELECT '1010' FROM dual UNION ALL
SELECT '0100' FROM dual
)
SELECT regexp_replace(numb,'[^1]','')
FROM dat;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.