SQL中 WHERE 后 LIKE %(select语句)%

HAOXIN19871207 2010-05-26 05:07:34
SQL中 WHERE 后 LIKE %(select语句)% 如何实现
...全文
301 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
HAOXIN19871207 2010-05-28
  • 打赏
  • 举报
回复
xiexie
wh62592855 2010-05-27
  • 打赏
  • 举报
回复
如果where中的子查询返回多行的话 可是尝试使用下面的方法
SQL> select * from t2;

ID NAME
---------- --------------------
1 a
2 b
3 c
1 d
SQL> create or replace function trans(text1 in number)
2 return varchar2
3 is
4 text2 varchar2(100) := '';
5 cursor c_result is select name from t2 where id = text1;
6 begin
7 for i in c_result loop
8 text2 := text2||i.name||',';
9 end loop;
10 text2 := rtrim(text2,',');
11 return text2;
12 end;
13 /

Function created

SQL>
SQL> select trans(1) from dual;

TRANS(1)
--------------------------------------------------------------------------------
a,d

SQL> select * from t2 where instr((select trans(1) from dual),name) > 0;

ID NAME
---------- --------------------
1 a
1 d


luoyoumou 2010-05-27
  • 打赏
  • 举报
回复
scott@SZTYORA> SELECT '%'||substr(t2.ename,1,2)||'%' sub_ename
2 FROM emp t2
3 WHERE rownum = 1;

SUB_ENAME
--------------------
%AD%

已选择 1 行。

scott@SZTYORA> SELECT *
2 FROM emp t1
3 WHERE ename like (SELECT '%'||substr(t2.ename,1,2)||'%' sub_ename
4 FROM emp t2
5 WHERE rownum = 1 );

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- ------------ ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1100 30

已选择 1 行。

已用时间: 00: 00: 00.03

scott@SZTYORA> SELECT *
2 FROM emp t1
3 WHERE ename like '%AD%';

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- ------------ ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1100 30

已选择 1 行。

已用时间: 00: 00: 00.01
luoyoumou 2010-05-27
  • 打赏
  • 举报
回复
scott@SZTYORA> SELECT *
2 FROM emp t1
3 WHERE ename like (SELECT '%'||substr(t2.ename,1,2)||'%' sub_ename
4 FROM emp t2
5 WHERE rownum = 1 );

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- ------------ ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1100 30

已选择 1 行。
HAOXIN19871207 2010-05-27
  • 打赏
  • 举报
回复
哦 明吧 谢谢
lzbbob1985 2010-05-26
  • 打赏
  • 举报
回复
select 字段 from 表 where 字段 = '条件'
如果这个查询 返回多个值
报错 ORA-01427 : 单行子查询返回多与一个行

考虑看看别的方法能实现不
LingXX0103 2010-05-26
  • 打赏
  • 举报
回复
select 字段
from 表
where 字段 like
'%' || (select 字段 from 表 where 字段 = '条件') || '%'
HAOXIN19871207 2010-05-26
  • 打赏
  • 举报
回复
好像可以呀 谢谢
lzbbob1985 2010-05-26
  • 打赏
  • 举报
回复
如果查询时单一结果
like '%'||(select 语句)||'%'

如果查询是多结果 就不清楚了 貌似不可能实现吧
HAOXIN19871207 2010-05-26
  • 打赏
  • 举报
回复
只用一个SQL语句求出来 急
HAOXIN19871207 2010-05-26
  • 打赏
  • 举报
回复
like ‘%@@%’ @@ 是通过SELECT 查出来的 如何做到
冰糖_adam 2010-05-26
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
iihero 2010-05-26
  • 打赏
  • 举报
回复
先把select语句的值求出来吧,放到变量 里头,再like
duqiangcise 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 haoxin19871207 的回复:]
SQL中 WHERE 后 LIKE %(select语句)% 如何实现
[/Quote]

阐明你的意图!
lzbbob1985 2010-05-26
  • 打赏
  • 举报
回复
说的不清晰 不明白意图

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧