Oracle模式匹配

时间:2014-07-14 12:05:43

标签: oracle

在Oracle中我想检查字符串是否在末尾有“=”符号。你能告诉我如何检查它。如果它在字符串末尾有'='符号,我需要跟踪它'='符号。

例如,

varStr VARCHAR2(20);

varStr = 'abcdef='; --needs to trailing '=' sign

3 个答案:

答案 0 :(得分:2)

我认为你不需要“模式匹配”。只需检查最后一个字符是否为=

where substr(varstr, -1, 1) = '='
使用否定位置调用时,

substr将从字符串的末尾起作用,因此substr(varstr,-1,1)将提取给定字符串的最后一个字符。

答案 1 :(得分:0)

使用REGEX_EXP功能。我正在输入一个sql命令,因为你没有在你的问题上指明。:

select * 
  from someTable
 where regexp_like( someField, '=$' );

模式$表示先前字符应位于字符串的末尾。

在sql fiddle上看到它:http://sqlfiddle.com/#!4/d8afd/3

答案 2 :(得分:0)

似乎substr是要走的路,至少有大约400K地址线的样本数据,这将返回1043个条目,这些条目以' r'平均0.2秒。

select count(*) from addrline where substr(text, -1, 1) = 'r';

另一方面,以下返回相同的结果,但需要1.1秒。

select count(*) from addrline where regexp_like(text, 'r$' );