想通过语句检测law表的title中含有的关键词,keyword表的keyword字段是关键词select t.title ,d.keyword
from law t
join keyword d on charindex(d.keyword,t.title) >0
上面语句实现的效果是
-----------------------------------
上海市企业职工最低工资规定 企业职工
上海市企业职工最低工资规定 工资
上海市企业职工最低工资规定 最低工资想要实现的效果是
---------------------------------------------------
上海市企业职工最低工资规定 企业职工 工资 最低工资
from law t
join keyword d on charindex(d.keyword,t.title) >0
上面语句实现的效果是
-----------------------------------
上海市企业职工最低工资规定 企业职工
上海市企业职工最低工资规定 工资
上海市企业职工最低工资规定 最低工资想要实现的效果是
---------------------------------------------------
上海市企业职工最低工资规定 企业职工 工资 最低工资
解决方案 »
- 求行转列的SQL语句,谢谢!
- 问一个数据库的问题
- 数据的格式问题,急~~~
- 有开始时间 要48小时内的数据 求SQL语句
- 不得不说的问题(有关CSDN的无人道的做法)-此贴肯定被删
- 续关于主键ID号的问题,发个图大家看看!
- char/varchar转换去nchar/nvarchar的问题
- 求一SQL语句
- 累!求教视图和表的区别。
- 请教高手: SQLserver7.0中有没有类似inStr(“x,x”, ",")定位字符位置的函数, 如果没有我们怎幺分割字符: 例如下面的示例:
- 如何动态的插入数据select * into @表名(动态生成)from
- 大家给我 看看这条sql错哪了,该如何写,在线等!!!
a b
1 1
1 2
1 3
2 1
2 2
3 1
--如何转换成如下结果:
a b
1 1,2,3
2 1,2
3 1 create table tb
(
a int,
b int
)
insert into tb(a,b) values(1,1)
insert into tb(a,b) values(1,2)
insert into tb(a,b) values(1,3)
insert into tb(a,b) values(2,1)
insert into tb(a,b) values(2,2)
insert into tb(a,b) values(3,1)
goif object_id('pubs..f_hb') is not null
drop function f_hb
go--创建一个合并的函数
create function f_hb(@a int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(b as varchar) from tb where a = @a
set @str = right(@str , len(@str) - 1)
return(@str)
End
go--调用自定义函数得到结果:
select distinct a ,dbo.f_hb(a) as b from tbdrop table tb--结果
a b
----------- ------
1 1,2,3
2 1,2
3 1(所影响的行数为 3 行)
多个前列的合并
数据的原始状态如下:
ID PR CON OP SC
001 p c 差 6
001 p c 好 2
001 p c 一般 4
002 w e 差 8
002 w e 好 7
002 w e 一般 1
===========================
用SQL语句实现,变成如下的数据
ID PR CON OPS
001 p c 差(6),好(2),一般(4)
002 w e 差(8),好(7),一般(1)if object_id('pubs..tb') is not null
drop table tb
gocreate table tb
(
id varchar(10),
pr varchar(10),
con varchar(10),
op varchar(10),
sc int
)
insert into tb(ID,PR,CON,OP,SC) values('001', 'p', 'c', '差', 6)
insert into tb(ID,PR,CON,OP,SC) values('001', 'p', 'c', '好', 2)
insert into tb(ID,PR,CON,OP,SC) values('001', 'p', 'c', '一般', 4)
insert into tb(ID,PR,CON,OP,SC) values('002', 'w', 'e', '差', 8)
insert into tb(ID,PR,CON,OP,SC) values('002', 'w', 'e', '好', 7)
insert into tb(ID,PR,CON,OP,SC) values('002', 'w', 'e', '一般', 1)
goif object_id('pubs..test') is not null
drop table test
go
select ID,PR,CON , OPS = op + '(' + cast(sc as varchar(10)) + ')' into test from tb--创建一个合并的函数
if object_id('pubs..f_hb') is not null
drop function f_hb
go
create function f_hb(@id varchar(10),@pr varchar(10),@con varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(OPS as varchar) from test where id = @id and @pr = pr and @con = con
set @str = right(@str , len(@str) - 1)
return(@str)
End
go--调用自定义函数得到结果:
select distinct id ,pr , con , dbo.f_hb(id,pr,con) as OPS from testdrop table tb
drop table test--结果
id pr con OPS
---------- ---------- ---------- -------------------
001 p c 差(6),好(2),一般(4)
002 w e 差(8),好(7),一般(1)(所影响的行数为 2 行)create table b
(col varchar(20))insert b values ('a')
insert b values ('b')
insert b values ('c')
insert b values ('d')
insert b values ('e')
declare @sql varchar(1024)
set @sql=''
select @sql=@sql+b.col+',' from (select col from b) as b
set @sql='select '''+@sql+''''
exec(@sql)
create function f_hb(@title varchar(50))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(keyword as varchar) from
(
select t.title ,d.keyword
from law t
join keyword d on charindex(d.keyword,t.title) >0
) t
where title = @title
set @str = right(@str , len(@str) - 1)
return(@str)
End
go--调用自定义函数得到结果:
select distinct title ,dbo.f_hb(title) as keyword from
(
select t.title ,d.keyword
from law t
join keyword d on charindex(d.keyword,t.title) >0
) m
select t.title ,case when d.keyword='企业职工' then d.keyword else null end as 企业职工,
case when d.keyword='工资' then d.keyword else null end as 工资,
case when d.keyword='最低工资' then d.keyword else null end as 最低工资
from law t
join keyword d on charindex(d.keyword,t.title) >0
group by t.title