Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅从字符串中提取0-9个数字_Sql_Teradata_Teradata Sql Assistant - Fatal编程技术网

Sql 仅从字符串中提取0-9个数字

Sql 仅从字符串中提取0-9个数字,sql,teradata,teradata-sql-assistant,Sql,Teradata,Teradata Sql Assistant,需要从varchar列中提取所有数字字符,即(0-9)。 假设我们有像abc 123 456k这样的数据,那么输出应该是“123456”,即包括要过滤掉的空格在内的非数字字符。 我使用的是Teradata版本15.10 我使用了REGEXP\u SUBSTR(ATRB\u 7\u VAL,[0-9]+')和REGEXP\u REPLACE(ATRB\u 7\u VAL,[^0-9]*',''),但两者都没有给出所需的输出 create multiset volatile table abc (

需要从
varchar
列中提取所有数字字符,即(0-9)。 假设我们有像abc 123 456k这样的数据,那么输出应该是“123456”,即包括要过滤掉的空格在内的非数字字符。 我使用的是Teradata版本15.10

我使用了
REGEXP\u SUBSTR(ATRB\u 7\u VAL,[0-9]+')
REGEXP\u REPLACE(ATRB\u 7\u VAL,[^0-9]*','')
,但两者都没有给出所需的输出

create multiset volatile table abc
(
ATRB_7_VAL varchar(100)
)
on commit preserve rows;


insert into abc (
'abc 123 456 xyzabck'
);
insert into abc (
'123456 789k'
);
insert into abc (
'123456 789k 678-123*'
);

select ATRB_7_VAL
,REGEXP_SUBSTR(ATRB_7_VAL, '[0-9]+') as val1
,REGEXP_REPLACE(ATRB_7_VAL,'[^0-9 ]*','') as val2

from abc;
预期结果

123456
123456789
123456789678123
使用
REGEXP\u SUBSTR(ATRB\u 7\u VAL,[0-9]+')的实际结果

带有
REGEXP\u REPLACE(ATRB\u 7\u VAL,[^0-9]*','')的实际结果


尝试用空字符串替换模式
[^0-9]*

SELECT REGEXP_REPLACE('abc 123 456k', '[^0-9]*', '')

这应该去掉任何非数字字符,包括空格。

当您运行
REGEXP\u REPLACE('abc 123 456k',“[^0-9]*”,'')时,
输出是什么?我们得到了数字,但空格仍然存在。123456 789 678123 123 456 123456 789
val2
123 456 xyzabck
123456 789k
123456 789k 678-123*
SELECT REGEXP_REPLACE('abc 123 456k', '[^0-9]*', '')