===== 求一简单的sql语句 =====

NBAAllStar 2006-12-21 10:13:35
查询一个字符型字段是否包含某些字符常量,可以用“like”来查询

但是,反过来呢?查询一个字符型字段是否被包含在另一个字符常量里面,该怎么样做?


举例来说,

假设,表“t_www”有两个字段:id , homepage

现在,表里面有3条记录,分别是:

1 http://www.csdn.net
2 http://www.sina.com.cn
3 http://www.126.com

查询“homepage”字段是否包含“csdn”可以用:

select * from t_www where homepage like '%csdn%'

查询“homepage”字段是否被包含在“http://www.csdn.net/123/abc.htm”里面,怎么写sql语句?

说明:这里的“http://www.csdn.net/123/abc.htm”只是举个例子,实际环境中是程序里面的一个参数。


多谢!
...全文
262 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hevin 2006-12-22
  • 打赏
  • 举报
回复
至于“http://www.csdn.net/123/abc.htm”只是个举例,实际环境中是程序里面的一个参数。
你可以在程序中将参数传进来,在程序里组织好SQL语句,再提交到Oracle执行即可,或者也可以写一个带参数的返回游标的过程来实现,但基本的还是如上面第三个SQL所示,道理是一样的。

SQL> SELECT *
2 FROM departments
3 WHERE 'aaRecruitingbb' LIKE '%' || department_name || '%';
hevin 2006-12-22
  • 打赏
  • 举报
回复
做个简单的倒换就可以实现你需要的功能,示例如下,你需要自己参考修改即可:


SQL> SELECT *
2 FROM departments;

DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
10 Administration 200 1700
20 Marketing 201 1800
30 Purchasing 114 1700
40 Human Resources 203 2400
50 Shipping 121 1500
60 IT 103 1400
70 Public Relations 204 2700
80 Sales 145 2500
90 Executive 100 1700
100 Finance 108 1700
110 Accounting 205 1700
120 Treasury 1700
130 Corporate Tax 1700
140 Control And Credit 1700
150 Shareholder Services 1700
160 Benefits 1700
170 Manufacturing 1700
180 Construction 1700
190 Contracting 1700
200 Operations 1700

DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
210 IT Support 1700
220 NOC 1700
230 IT Helpdesk 1700
240 Government Sales 1700
250 Retail Sales 1700
260 Recruiting 1700
270 Payroll 1700

27 rows selected

SQL> SELECT *
2 FROM departments
3 WHERE department_name LIKE '%ruit%';

DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
260 Recruiting 1700

SQL> SELECT *
2 FROM departments
3 WHERE 'aaRecruitingbb' LIKE '%' || department_name || '%';

DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
260 Recruiting 1700

SQL>
caixia615 2006-12-22
  • 打赏
  • 举报
回复
up
flyhenry 2006-12-22
  • 打赏
  • 举报
回复
同意楼上的,这是最简单的方法
bzszp 2006-12-22
  • 打赏
  • 举报
回复
or
select * from t_www where

instr('http://www.csdn.net/123/abc.htm',homepage)>0;
kaixie 2006-12-22
  • 打赏
  • 举报
回复
经过试验,我发现应该是
select * from t_www where instr(homepage,“http://www.csdn.net/123/abc.htm”)>0
shyming 2006-12-22
  • 打赏
  • 举报
回复
select * from t_www where instr(“http://www.csdn.net/123/abc.htm”,homepage)>0
wangzk0206 2006-12-21
  • 打赏
  • 举报
回复
9i之前的话 实现起来比较困难

应该是自己写PL/SQL

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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