如何在SQL中使用正则表达式提取重复数字后的值
我有下表(如何在SQL中使用正则表达式提取重复数字后的值,sql,regex,Sql,Regex,我有下表(表1): 我想获得以下值(位于重复数字之后):in-addr.arpa、a.b.c、a.b.c、in-addr.arpa。 我尝试使用以下格式,但没有成功: SELECT att1 FROM table1 WHERE REGEXP_LIKE(att1 , '^(\d+?)\1$') 我希望它在Impala和Oracle中运行。使用(假设您使用的是Oracle DB) [0-9]\。一个数字,后跟一个 [^0-9]+将匹配除数字以外的任何字符,直到找到下一个数字()围绕着它表示组
表1
):
我想获得以下值(位于重复数字之后):in-addr.arpa、a.b.c、a.b.c、in-addr.arpa
。
我尝试使用以下格式,但没有成功:
SELECT att1
FROM table1
WHERE REGEXP_LIKE(att1 , '^(\d+?)\1$')
我希望它在Impala和Oracle中运行。使用(假设您使用的是Oracle DB)
一个数字,后跟一个[0-9]\。
将匹配除数字以外的任何字符,直到找到下一个数字<代码>()围绕着它表示组(在本例中是第一个),我们只提取字符串的这一部分[^0-9]+
非常感谢@vkp,您知道在impala中什么与REGEXP\u SUBSTR等效吗?
REGEXP\u extract
?我在文档中看到了它,但不能确定您的版本是否有。这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是mysql
、postgresql
、sql server
、oracle
还是db2
——还是其他完全不同的内容。不清楚要提取字符串的哪一部分
SELECT att1
FROM table1
WHERE REGEXP_LIKE(att1 , '^(\d+?)\1$')
select regexp_substr(att1,'[0-9]\.([^0-9]+)',1,1,null,1)
from table1