我正在使用Teradata并尝试使用REGEXP_SIMILAR函数。在Teradata中使用REGEXP_SIMILAR
*** Teradata Database Release is 14.10.03.10
*** Teradata Database Version is 14.10.03.06
这是我的示例数据。
create table test_table(
test_col varchar(20)
);
insert into test_table values('lorem');
insert into test_table values('984kd');
insert into test_table values('ier7j');
insert into test_table values('34535');
insert into test_table values('lore9');
insert into test_table values(' 09sd');
我想查看以数字开头的记录。
select test_col, regexp_similar(test_col, '^\d+','i')
from test_table;
test_col regexp_similar(test_col,'^\d+','i')
-------------------- -----------------------------------
lore9 0
lorem 0
09sd 0
ier7j 0
984kd 0
34535 1
但是,上面的查询显示只匹配'34535'行而不匹配'984kd'。看起来像^
字符(也$
)没有预期的效果。
是不是REGEXP_SIMILAR类似于Oracle的REGEXP_LIKE?
有人可以解释为什么会发生这种情况,以及如何解决这个问题。
是的,那有效。但是^和$根本不需要?在Oracle中使用REGEXP_LIKE之后,我发现它很奇怪。 – Noel 2014-11-21 05:43:06
'^'和'$'用于完全匹配。您不需要'$',但是您需要定义''''以便匹配以整数开头的行。 – vks 2014-11-21 05:45:06
奇怪的是,'REGEXP_SUBSTR(test_col,'^ \ d +')'按预期工作。如果您是客户,我会建议在TD支持下开一个事件。 – dnoeth 2014-11-21 07:11:31