好贷网好贷款

SQL查询多值字段中的值 50nanyida0416sushe]

发布时间:2016-12-4 22:17:55 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SQL查询多值字段中的值 50nanyida0416sushe]",主要涉及到SQL查询多值字段中的值 50nanyida0416sushe]方面的内容,对于SQL查询多值字段中的值 50nanyida0416sushe]感兴趣的同学可以参考一下。

一张employee表,字段有emp_no,emp_name,emp_degree,其中emp_degree字段是学位,因为一个员工可能有多个学位,数据库设计时采用了把多个学位的值用逗号分隔存在emp_degree字段中。现在我想问的是如何用sql语句查询出具有a学位的员工。 示例数据: emp_no   emp_name  emp_degree 1         keven     a,b,c 2          nike     a,b 3          mical     b 这条sql语句如何写呢?

select * from tb where emp_degree like'%a%' or select * from tb where charindex('a',emp_degree)>0

select * from tb where ',' + emp_degree + ',' like'%,a,%' or select * from tb where charindex(',a,',',' + emp_degree + ',')>0

select * from tb where charindex(','+'a'+',',','+emp_degree+',')>0

这个语句性能不很好,不过设计这样了,估计数据量也不大,就这样了 如果数据量很大而且这个需求必须,需要考虑设计

引用 2 楼 nbdba 的回复:SQL code select * from tb where ',' + emp_degree + ',' like'%,a,%' or select * from tb where charindex(',a,',',' + emp_degree + ',')>0 +

select * from tablename charindex(',a,',xxx)>0

上面问题 1 keven a,b,c 2 nike a,b 3 mical b 我要查询成这样  keven a  keven b  keven c nike a nike b mical b 这个怎么写

declare @t table(emp_no int,emp_name varchar(10),emp_degree varchar(10)) insert into @t select 1,'keven','a,b,c' union all select 2,'nike','a,b' union all select 3,'mical','b'; select a.emp_no,a.emp_name,b.v1 from ( select emp_no,emp_name,cast('<root><d>'+REPLACE(emp_degree ,',','</d><d>')+'</d></root>' as xml) as val from @t ) a outer apply ( select  v1=N.v.value('.','varchar(10)') from a.val.nodes('/root/d') N(v) ) b /* emp_no      emp_name   v1 ----------- ---------- ---------- 1           keven      a 1           keven      b 1           keven      c 2           nike       a 2           nike       b 3           mical      b */

搜索“拆分列值”引用 7 楼 jsntzhj 的回复:上面问题 1 keven a,b,c 2 nike a,b 3 mical b 我要查询成这样  keven a  keven b  keven c nike a nike b mical b 这个怎么写

8楼得出的结果不对啊

可能是版本的问题我是2000的

引用 3 楼 fredrickhu 的回复:SQL code select * from tb where charindex(','+'a'+',',','+emp_degree+',')>0 +1

给个2000版的吧

select * from tb where ',' + emp_degree + ',' like'%,a,%' or select * from tb where charindex(',a,',',' + emp_degree + ',')>0

 #8楼 得分:0回复于:2011-09-21 16:55:11SQL code  select a.emp_no,a.emp_name,b.v1 from (     select emp_no,emp_name,cast('<root><d>'+REPLACE(emp_degree ,',','</d><d>')+'</d></root>' as xml) as val from @t ) a outer apply (     select  v1=N.v.value('.','varchar(10)') from a.val.nodes('/root/d') N(v) ) b  这个在SQL2000里怎么写

上一篇:SQL一个字段以分格符分成N行怎么写 20jsntzhj]
下一篇:like'%匹配的文字%',SQL Server 2008怎么优化? 40chxy148]

相关文章

相关评论