Sql 检查是否存在值​存在于字符串中

Sql 检查是否存在值​存在于字符串中,sql,oracle,Sql,Oracle,我有这样的字串: 'Oracle数据库令牌:xxxx' 如果xxxx是三个变量之一,我需要返回true或false: 1或11或111或1111或11111或111111等。 字符'-' 号码123456789 我试图为regexp_substr函数构建一个正则表达式,但结果非常困难 这在正则表达式中可能吗?我想您需要: where regexp_like(suchstring, '^Oracle Database Token: ([0-9]+|-)[.]' 编辑: 如果您需要这些具体数字:

我有这样的字串: 'Oracle数据库令牌:xxxx'

如果xxxx是三个变量之一,我需要返回true或false:

1或11或111或1111或11111或111111等。 字符'-' 号码123456789 我试图为regexp_substr函数构建一个正则表达式,但结果非常困难

这在正则表达式中可能吗?

我想您需要:

where regexp_like(suchstring, '^Oracle Database Token: ([0-9]+|-)[.]'
编辑:

如果您需要这些具体数字:

where regexp_like(suchstring, '^Oracle Database Token: (1+|-|123456789)[.]'
我想你想要:

where regexp_like(suchstring, '^Oracle Database Token: ([0-9]+|-)[.]'
编辑:

如果您需要这些具体数字:

where regexp_like(suchstring, '^Oracle Database Token: (1+|-|123456789)[.]'
您可以使用TRANSLATE测试第一个条件,其他两个是简单的相等性测试:

挑选* 从你的桌子上 其中token='Oracle数据库token:-。' 或令牌='Oracle数据库令牌:123456789' 或标记“Oracle数据库标记:.” 并转换标记“1”,“Oracle数据库标记:” 样本数据:

查询输出:

但是简单的字符串函数/比较可能更快。

您可以使用TRANSLATE测试第一个条件,其他两个是简单的相等性测试:

挑选* 从你的桌子上 其中token='Oracle数据库token:-。' 或令牌='Oracle数据库令牌:123456789' 或标记“Oracle数据库标记:.” 并转换标记“1”,“Oracle数据库标记:” 样本数据:

查询输出:


但简单的字符串函数/比较可能更快。

请提供您想要识别和不想要识别的示例。第一个和第三个不是同一件事吗?我需要确定“Token:”和“,”之间的值。请提供您想要识别和不想要识别的示例。第一个和第三个不是同一件事吗?我需要识别“Token:”和“,”之间的值,这将匹配像123这样的标记,而不仅仅是123456789或重复的1。@MT0。我把第三项解释为任何数字。我想你是对的,它指的是一个特定的数字。这将匹配像123这样的标记,而不仅仅是123456789或重复的1。@MT0。我把第三项解释为任何数字。我想你是对的,它指的是一个特定的数字。你能帮我转换成REGEXP\u SUBSTR吗?选择REGEXP_substr“Oracle数据库令牌:123456789.”,“^Oracle数据库令牌:1+| 123456789 |-\.$”,1,1,null,1从双非working@geekcode您需要SUBSTR标记,24,长度标记-24或REGEXP_SUBSTR标记“^Oracle数据库标记:1+| 123456789 |-\.$”,1,1,NULL,1例如,您可以帮助我转换为REGEXP_SUBSTR吗?选择REGEXP_substr“Oracle数据库令牌:123456789.”,“^Oracle数据库令牌:1+| 123456789 |-\.$”,1,1,null,1从双非working@geekcode您需要SUBSTR令牌,24,长度令牌-24或REGEXP_SUBSTR令牌,“^Oracle数据库令牌:1+| 123456789 |-\.$”,例如,1,1,NULL,1