【发布时间】:2015-01-19 04:48:54
【问题描述】:
我正在研究 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 后我觉得很奇怪。
-
^和$用于完全匹配。您不需要$,但您确实需要^,以便匹配以整数开头的行。 -
奇怪,
REGEXP_SUBSTR(test_col, '^\d+')按预期工作。如果您是客户,我建议您通过 TD 支持打开事件。