[英]Checking if values exist within string
I have such string: 'Oracle Database Token: xxxx.';我有这样的字符串:'Oracle 数据库令牌:xxxx。';
I need to return true or false if xxxx is one of three variants:如果 xxxx 是三个变体之一,我需要返回 true 或 false:
I tried to build a regular expression for the regexp_substr()
function but it turned out to be very hard.我尝试为
regexp_substr()
function 构建正则表达式,但结果非常困难。
Is this possible in a regular expression?这可能在正则表达式中吗?
You can use TRANSLATE
to test for the first condition and the other two are simple tests for equality:您可以使用
TRANSLATE
来测试第一个条件,其他两个是简单的相等测试:
SELECT *
FROM your_table
WHERE token = 'Oracle Database Token: -.'
OR token = 'Oracle Database Token: 123456789.'
OR ( token <> 'Oracle Database Token: .'
AND TRANSLATE( token, '_1', '_' ) = 'Oracle Database Token: .' )
Sample Data :样本数据:
CREATE TABLE your_table ( token ) AS
SELECT 'Oracle Database Token: -.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 123456789.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 1.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 111.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 111111.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 12111.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: -12.' FROM DUAL;
Query Output :查询 Output :
|| TOKEN |
代币 | |:-------------------------------- |
|:-------------------------------- | |
| Oracle Database Token: -.
Oracle 数据库令牌:-。 |
| |
| Oracle Database Token: 123456789. |
Oracle 数据库令牌:123456789。| |
| Oracle Database Token: 1. |
Oracle 数据库令牌:1。| |
| Oracle Database Token: 111. |
Oracle 数据库令牌:111。 |
| Oracle Database Token: 111111. |
Oracle 数据库令牌:111111。|
You could also write it as a regular expression:你也可以把它写成正则表达式:
SELECT *
FROM your_table
WHERE REGEXP_LIKE( token, '^Oracle Database Token: (1+|123456789|-)\.$' )
But simple string functions/comparisons might be quicker.但是简单的字符串函数/比较可能会更快。
I think you want:我想你想要:
where regexp_like(suchstring, '^Oracle Database Token: ([0-9]+|-)[.]'
EDIT:编辑:
If you want those specific numbers:如果你想要那些特定的数字:
where regexp_like(suchstring, '^Oracle Database Token: (1+|-|123456789)[.]'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.