Oracle SQL如何检查字段是否具有特定值[已关闭]

yvgpqqbh  于 2023-05-22  发布在  Oracle
关注(0)|答案(2)|浏览(163)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

4天前关闭。
Improve this question
我有一个查询,我试图写,我需要找到的数据,其中有特殊字符。
我知道如何使用'%example %',但我想搜索多个特殊字符,而不是几个(我可以使用OR),所以我创建了一个新表,其中包含我要查找的所有特殊字符。
例如:select * from table 1 where field 1 like '%*%'或field 1 like '%$%'。所以我的问题是:我可以使用我在上面的查询中创建的表来避免编写许多行代码吗?
谢谢

jvlzgdj9

jvlzgdj91#

这里有一个选择
样品表:

SQL> select ename, job from emp order by job, ename;

ENAME      JOB
---------- ---------
FORD       ANALYST
SCOTT      ANALYST
ADAMS      CLERK
JAMES      CLERK
MILLER     CLERK
SMITH      CLERK
BLAKE      MANAGER
CLARK      MANAGER
JONES      MANAGER
KING       PRESIDENT
ALLEN      SALESMAN
MARTIN     SALESMAN
TURNER     SALESMAN
WARD       SALESMAN

14 rows selected.

这是你的“新”表,包含你想在上面的示例表中的一列中搜索的字符串:

SQL> select * from test;

WORD
----
GER
LER

这是一个查询-搜索其工作包含存储在test表中的“单词”的员工:

SQL> select e.ename, e.job
  2  from emp e join test t on instr(e.job, t.word) > 0;

ENAME      JOB
---------- ---------
JONES      MANAGER
BLAKE      MANAGER
CLARK      MANAGER
SMITH      CLERK
ADAMS      CLERK
JAMES      CLERK
MILLER     CLERK

7 rows selected.

SQL>
1mrurvl1

1mrurvl12#

您可以使用INNER JOIN来执行此操作,如下所示:

SELECT t.name
FROM mytable t
INNER JOIN regTable r on t.name like '%' || r.reg || '%';

或者你可以简单地使用regexp_like如下:

select *
from mytable
where regexp_like(name, '[*$]');

Demo here

相关问题