存储过程里LIKE查询的问题。请教!……

slhuang 2004-06-12 08:15:37
存储过程里像 LIKE ‘%’这种怎么加在变量前啊?
比如:
Create PROCEDURE PROD
@S_NAME VARCHAR(5) OUTPUT
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE '%'+@S_NAME+'%' //????就是这里有问题。不知道该怎么弄好。
GO
...全文
212 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
slhuang 2004-06-12
  • 打赏
  • 举报
回复
为什么两个条件:
S_NAME LIKE '%'+@S_NAME+'%' or
S_introduce like '%'+@S_introduce+'%' //这里报错。
就报错呢?
一个的话可以了。
S_NAME LIKE '%'+@S_NAME+'%'
slhuang 2004-06-12
  • 打赏
  • 举报
回复
不用output 是一样的出错。郁闷。:)
slhuang 2004-06-12
  • 打赏
  • 举报
回复
output 只是为了取值而已。:)
S_introduce like '%'+@S_introduce+'%' //这里报错。是怎么回事啊?
uffeng 2004-06-12
  • 打赏
  • 举报
回复
楼主 的 没有什么问题牙
再说 output 也不是不可以的
output 也不是是输出参数,既可以输入 也 可以输出的吧!
smx717616 2004-06-12
  • 打赏
  • 举报
回复
你的这个为什么都用 ouput 呢?
为什么不看看我说的那个
我一直都这么用的
smx717616 2004-06-12
  • 打赏
  • 举报
回复
哦 错了,能的
sorry
smx717616 2004-06-12
  • 打赏
  • 举报
回复
text oupput text 好像不能做 output把
slhuang 2004-06-12
  • 打赏
  • 举报
回复
Create PROCEDURE PROD
@S_NAME VARCHAR(5) OUTPUT,
@S_introduce text oupput
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE '%'+@S_NAME+'%' or
S_NO like '%'+@S_introduce+'%' //这里报错。
GO
错误如下:
错误403:对数据类型而言,运算符无效,运算符为add,类型为text.

这是为什么啊?难道text类型不能?
wangehuai 2004-06-12
  • 打赏
  • 举报
回复
@s_name 是输入参数时就可以啊 我就这样写的!
八爪鱼-杭州 2004-06-12
  • 打赏
  • 举报
回复
你上面的存储过程这样写就行了。
要注意去掉@S_NAME后面的空格!
csdnzgd 2004-06-12
  • 打赏
  • 举报
回复
你写LIKE的语法是正确的。但是@S_NAME用在LIKE条件里面应该是一个输入参数,为什么要在声明时声明成输出参数呢,这样是不对了。如果是输出参数一定要负返回值。

Create PROCEDURE PROD (
@S_NAME VARCHAR(5) )
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE '%'+@S_NAME+'%'
smx717616 2004-06-12
  • 打赏
  • 举报
回复
不用这样写,只写
Create PROCEDURE PROD
@S_NAME VARCHAR(5)
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE S_NAME //????就是这里有问题。不知道该怎么弄好。
GO
就行了
关键是你的字符串处理时
如 dim dd as string
dd="%" & "你的参数" & "%"
这样就行了
slhuang 2004-06-12
  • 打赏
  • 举报
回复
先顶一下。急啊。
slhuang 2004-06-12
  • 打赏
  • 举报
回复
感谢楼上几位的热心帮助。
slhuang 2004-06-12
  • 打赏
  • 举报
回复
我的完整代码是:
CREATE PROCEDURE complex_query
@inf_time datetime output,
@subject varchar(50) output,
@information text output,
@recorder char(10) output,
@record_time datetime output,
@inf_id int output,
@inf_temp text
AS
set @inf_temp='%'+@information+'%'
select * from market_inf where
inf_time=@inf_time or
subject like '%'+@subject+'%' or
information like @inf_temp or
recorder=@recorder or
record_time=@record_time
GO
slhuang 2004-06-12
  • 打赏
  • 举报
回复
楼上的。让你见笑了。我看懂你的意思了。
但是现在又出问题了。多重条件查询的参数输入间用什么隔开?如我上面的代码。
空格吗?
smx717616 2004-06-12
  • 打赏
  • 举报
回复
????
现在的人呀,我的程序用多少年都没错,为什么不考虑呢?
Create PROCEDURE PROD
@S_NAME VARCHAR(5) OUTPUT
AS
SET @S_NAME = '%' + @S_NAME + '%'
SELECT * FROM TABLE1 WHERE
S_NAME LIKE @S_NAME
GO
这样写也是行的,是动态 SQL 语句 必须得赋值的
不过我个人认为还是用字符串,即我的那种方法好,不容易出错
slhuang 2004-06-12
  • 打赏
  • 举报
回复
感谢楼上的几位参与和帮助。但是问题还没有解决啊。
另外就是,多条件查询时输入的变量间是用空格隔开吗?
比如:
DBSP.CommandText="Exec complex_query "
+"'"+dtInfTime+"' "
+"'"+this.TextBox_inf_subject.Text.Trim()+"' "
+"'"+this.TextBox_inf_key.Text.Trim()+"' "
+"'"+this.TextBox_recorder.Text.Trim()+"' "
+"'"+dtRecordTime+"' "
+"'"+this.TextBox_inf_id.Text.Trim()+"'";
DBSP.Connection.Open();
DBSP.ExecuteReader();
slhuang 2004-06-12
  • 打赏
  • 举报
回复
请问。楼上的。是什么意思啊?
bobowu 2004-06-12
  • 打赏
  • 举报
回复
Create PROCEDURE PROD
@S_NAME VARCHAR(5) OUTPUT
AS
SET @S_NAME = '%' + @S_NAME + '%'
SELECT * FROM TABLE1 WHERE
S_NAME LIKE @S_NAME
GO
加载更多回复(1)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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