【问题标题】:like and regexp_like喜欢和 regexp_like
【发布时间】:2015-09-08 19:23:54
【问题描述】:

因为我们有 %。例如:如果我们给 ad%,它将获取所有以 ad 开头的记录,但我应该使用 regexp_like。对于 regexp_like 可以使用什么,以便它充当 like 的 %。我不能使用 ^ad,因为从 UI 中我们会给出像 ad* 这样的东西来获取。

查询前:select * from employee where fname like 'pr%';

当前查询:select * from employee where regexp_like(fname ,'pr+');

对于当前查询,我正在获取包含 pr 但我想获取以 pr 开头的值。

Testdata:如果给出 pr* 那么我应该得到程序等,即以 pr 开头的值。

【问题讨论】:

  • 您能否添加您的查询,以便我们查看您要执行的操作?也可能是一些测试数据和预期结果
  • 我的问题现在清楚了吗?
  • 首先,您使用的正则表达式错误,正确的语法 afaik 是“...where regexp_like(fname, 'pr+')”,我认为 regexp_like 的通配符是句点“。”所以你需要'pr.'

标签: sql regex oracle oracle11g regexp-like


【解决方案1】:

试试这个:

SELECT * 
FROM employee 
WHERE REGEXP_LIKE (fname, '^pr(*)');

Fiddle

据我所知,这个似乎也有效:

SELECT * 
FROM employee 
WHERE REGEXP_LIKE (fname, '^pr.');

或者另一个有效的:

SELECT *
FROM employee
WHERE regexp_like(fname,'^pr');

【讨论】:

  • 这就是我们来这里的目的,没问题
  • 嘿,杰里米,我正在尝试 SELECT * FROM mytable WHERE regexp_like(fname,'n$');获取以 n 结尾但 $ 不起作用的值 ..:( 你能帮我吗...
  • 应该类似于“regexp_like(fname,'(*)n$');” ,实际上 n$ 应该可以工作,如果它不是一个 varchar 字段(如果它是一个普通的 char(20) 或其他东西),你可能需要修剪你的 fname
  • @Alén 试试这个:“WHERE regexp_like(trim(fname),'n$');”
【解决方案2】:

检查下面的链接regexp_like -

http://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm

如果仍然无法解决您的问题,那么正如 Jeremy 所指出的,分享测试数据和预期结果。这将有助于重新恋爱。

查看以下示例

create table a 
(b varchar2(150));

insert into a values ('Pravin');

insert into a values ('TestPravin');

select * from a where REGEXP_LIKE (B, '^Pra');

【讨论】:

  • 我已经提供了查询和测试数据。
  • @Alén 我已经为你添加了示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2016-04-04
  • 2016-12-31
  • 2020-10-13
  • 1970-01-01
  • 2011-11-11
相关资源
最近更新 更多