存储过程 - 将两个值传递给存储过程

时间:2013-03-06 12:15:00

标签: sql stored-procedures

create proc coursenames 
 @course varchar(30), @In varchar(20) 
as 
select fname, lname
from student
where course = @course
and lname like @In+'%'

此代码and lname like @In+'%'的最后一行,我不完全确定它的作用是什么?

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

这意味着选择名称中包含In前缀

的所有学生

答案 1 :(得分:0)

在类似的条款中,有两个占位符可能。

  • %
  • _

%表示“任意数量的字符,0或更多”

_表示“一个字符”。

@In+'%'连接@In%中的字符串,这意味着该列以@In中的任何内容开头,以任何字符串结尾或以字符串结尾在@In

另一个例子:

foo like '%ab_d'

搜索foo列以任何内容开头的所有行,并以例如“abcd”或“abxd”结束

答案 2 :(得分:0)

它用于过滤记录where lname is starting with what you pass in @In and anything after that.请阅读此msdn link以便更好地理解

例如,如果您通过@In = 'Ja'并且您的lname记录如下

lname
------
Jackson
James
Robert

lname like @In+'%'的选择结果将是以'Ja'开头的名字,如下所示。 (即; 'Robert' 过滤掉,因为它不是以'Ja'开头

lname
------
Jackson
James

答案 3 :(得分:0)

在SQL中,%符号用于通配符搜索。基本上,代码的最后一行是要求任何以@In参数开头的姓氏开头的记录。 %符号允许查询中的LIKE查找您提供的文本以及之后出现的任何文本。如果你在@In参数之前放置%符号,你将得到任何记录,其中姓氏以@In为结尾;相应地,如果你在查询中加上'%'+ @ In +'%',它将返回记录,其中@In出现在字符串中的任何地方