Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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中使用正则表达式提取重复数字后的值_Sql_Regex - Fatal编程技术网

如何在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