这个sql语句怎么实现?(100分)

  • 主题发起人 主题发起人 sleepy
  • 开始时间 开始时间
S

sleepy

Unregistered / Unconfirmed
GUEST, unregistred user!
一表,中有字段 keywords等 ,内容如下:

No Keywords title
1 教师 试论.....
2 评估 教学评估 教师评估 ...
3 教师评估 评估 ...
4 教师节 教师 ...
5 .

现欲实现只选取Keywords字段中有"教师"这个关键字的字段 如上表中
的1和4,如果用
select * from 表A where Keywords like '%教师%'
则会选取全部的记录,这不是我所需要的,请问有办法吗?

如果关键字之间不用空格,而用","有办法吗?
 
你是不是做一个教学质量评估系统呀?我以前见过两个。
 
可以这样,
No Keywords title
1 教师 试论.....
2 评估 教学评估 教师评估 ...
3 教师评估 评估 ...
4 教师节 教师 ...
5 .

就是在每个关键字的前后都是空格, 这样
select * from tablea where keywords like '% 教师 %'
就不会把不相干的词得到了.
 
to cytown:
嗯,这样是可以:)。但是,如果已经录入完的数据中,第一个词
的前面和最后一个词的后面并没有空格怎么办呢?
to hexi:
不是啦,是举个例子说明问题:) 教师评估方面,我只编制过文卷
没搞过程序,呵呵。
 
呵呵, update tablea set keywords =' '+keywords+' ';
 
这个问题最好的解决办法是各个关键字(包括首和尾)之间用特殊的符号隔开。
如上表就成如下格式:
No Keywords title
1 .教师. 试论.....
2 .评估.教学评估.教师评估. ...
3 .教师评估.评估. ...
4 .教师节.教师. ... 5 .
这样就可以用如下语句
select * from 表A where Keywords like '%.教师.%'

若关键字字段不能改变,则条件就比较复杂,但也可以实现:
select * from 表A
where ((Keywords = '教师')
or (Keywords like '教师 %')
or (Keywords like '% 教师 %')
or (Keywords like '% 教师')
)
即条件由四个分条件组成
1、只有“教师”一个关键字
2、关键字“教师”位于字段的首部
3、关键字“教师”位于字段的中间
4、关键字“教师”位于字段的尾部
 
agree with yck
 
还是yck的第一种办法好,第二种办法的查询开销比较大,
大数据量时速度上不去。
 
多人接受答案了。
 
后退
顶部