怎样与数据库中的关键字匹配?

yjukh 2011-11-07 06:10:18
数据库中存了一列关键字,如:
num keywords
1 "中华"
2 "机械"
3 "学习"
4 "程序"

用户输入一串字符串(如"机械应用程序"),怎样查找它包含了哪些关键字?

SQL查询语句应该怎么写?我需要输出前面的列号

谢谢!
...全文
355 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大力水手 2011-11-08
  • 打赏
  • 举报
回复

declare @str nvarchar(100)
set @str = '机械应用程序'
select * from tb where charindex(keywords,@str)>0

上面的方法都可以实现
yjukh 2011-11-08
  • 打赏
  • 举报
回复
like貌似不行,它必须是 字段 like %字串%,而不能 %字段% like 字串
我后来又查到了一个instr
Mr_Nice 2011-11-07
  • 打赏
  • 举报
回复
楼上都全了,charindex,patindex,like
--小F-- 2011-11-07
  • 打赏
  • 举报
回复

declare @str nvarchar(100)
set @str = '机械应用程序'
select * from tb where charindex(keywords,@str)>0
TimZhuFaith 2011-11-07
  • 打赏
  • 举报
回复
declare @m nvarchar(100)
set @m = N'机械应用程序'
select num from tb where charindex(keywords, @m, 0) > 0
中国风 2011-11-07
  • 打赏
  • 举报
回复
方法貼重

重貼方法

use Tempdb
go
--> -->

if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([num] int,[keywords] nvarchar(2))
Insert #T
select 1,N'中华' union all
select 2,N'机械' union all
select 3,N'学习' union all
select 4,N'程序'
Go
DECLARE @str NVARCHAR(1000)
SET @str='机械应用程序'
Select * from #T WHERE PATINDEX('%'+keywords+'%',@str)>0

/*
num keywords
2 机械
4 程序*/
中国风 2011-11-07
  • 打赏
  • 举报
回复
use Tempdb
go
--> -->

if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([num] int,[keywords] nvarchar(2))
Insert #T
select 1,N'中华' union all
select 2,N'机械' union all
select 3,N'学习' union all
select 4,N'程序'
Go
DECLARE @str NVARCHAR(1000)
SET @str='机械应用程序'
Select * from #T WHERE @str LIKE '%'+keywords+'%' ORDER BY num

/*
num keywords
2 机械
4 程序*/
-晴天 2011-11-07
  • 打赏
  • 举报
回复
只要列号:
select num from tb where charindex(keywords,@str)>0
快溜 2011-11-07
  • 打赏
  • 举报
回复
select num from tb where '机械应用程序' like '%'+keywords+'%'
-晴天 2011-11-07
  • 打赏
  • 举报
回复
select * from tb where charindex(keywords,@str)>0

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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