CREATE PROCEDURE [MyPro_ByNKey]
@Nkey Nvarchar(200)
AS
declare @s nvarchar(4000)
set @s='insert # select re='''+replace(@s, ',', ''' union select ''')+''''
create table #(nkey nvarchar(2000))
exec(@s)
SELECT * from News a
where exists(
select * from # where charindex(','+Nkey+',',','+a.NKey+',')>0)
go这是他写的一个解决相关新闻的存储过程
表结构是:
[ID],[Title],[Content],[Nkey],[RegDate]字段 [Nkey],是存储关键字:如"中国,美国".
我照着做了,但就是查不出来,特别是模糊查询的问题上,这样写好像不能模糊查询.
希望能得到高手的帮助.
期盼佳音,谢谢!
@Nkey Nvarchar(200)
AS
declare @s nvarchar(4000)
set @s='insert # select re='''+replace(@s, ',', ''' union select ''')+''''
create table #(nkey nvarchar(2000))
exec(@s)
SELECT * from News a
where exists(
select * from # where charindex(','+Nkey+',',','+a.NKey+',')>0)
go这是他写的一个解决相关新闻的存储过程
表结构是:
[ID],[Title],[Content],[Nkey],[RegDate]字段 [Nkey],是存储关键字:如"中国,美国".
我照着做了,但就是查不出来,特别是模糊查询的问题上,这样写好像不能模糊查询.
希望能得到高手的帮助.
期盼佳音,谢谢!
解决方案 »
- 怎样复制字符
- 省城缩略图的时候如何改变缩略图颜色
- 一个网站同时连接两个数据库,如何写配置文件,这样可以吗
- 求助一款报表,收费和免费都行,具体要求见内!!!!!!!!!!
- 有人在gridview的编辑模板中用过可输入并且能绑定数据的下拉框吗
- DataGrid中的分页问题
- 怎样显示html编辑控件生成的文本
- 谁能帮我看看,谢谢!!
- 问一问题啊,朋友来看看
- 在框架页中如何动态为某一框架指定aspx页面并给指定网页的某一元素(textbox)赋值.
- Asp如何结合Aspx页面
- 2003,对路径“C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\sxtj\910a2012\8bd4284c”的访问被拒绝。
patindex (',%'+Nkey+'%,',','+a.NKey+',')>0)
set @s='insert # select re='''+replace(@s, ',', ''' union select ''')+''''在声明@s之后,@s是个空值即 NULL
@s='insert ....' + replace(NULL,',',''' union ....
NULL与字串或数值进行运算仍为NULL,所以结果仍为NULL
不知道你想干什么.
比如 a,b,c
将成为
select x='a' union select 'b' union select 'c'
行成
a
b
c
这样的行集,再利用charindex进行连接以达到搜索的结果.
很明显,你将@nkey写成@s了set @s='select x='''+ replace(@nkey,',',''' union all select ''')
exec('select a.* from news a inner join (' + @s + ''')b on charindex('',''+x+'','',
'',''+nkey+'','')>0')
加','是用于在元素项间查匹配.
比如
某字段存储格式如下
1,22,vv,dd --这是一个字段
此时要查此表中该字段中含22这个元素的记录,此时才加','来匹配. 否则如果里面不存在22而是221那么也会被误取到.如果你是实现模糊查询,那么直接:
set @s='select x='''+ replace(@nkey,',',''' union all select ''')
exec('select a.* from news a inner join (' + @s + ''')b on charindex(x,nkey)>0')
即可.
当然,也可以换用like或patindex