繁体   English   中英

oracle如何从数字中提取一个数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM