2013-03-06 156 views
3
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+'%',我不完全确定它的作用?存储过程 - 将两个值传递到存储过程

任何帮助将不胜感激。

回答

0

以类似的条款有两种可能的占位符。

  • %
  • _

%装置“的任何数目的字符,0或more`

_装置 “一个字符”。

@In+'%'地连接了字符串@In%,w这意味着该列以@In中的任何内容开头,并以任何结尾或只是@In中的字符串结束。

又如:

foo like '%ab_d' 

搜索在富柱与任何东西开始,以例如“ABCD”或者“abxd”结尾的所有行

0

这意味着选择所有学生的名字有在前缀

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'开头的lname如下所示。 (即; 'Robert'过滤掉因为它不开始'Ja'

lname 
------ 
Jackson 
James 
0

在SQL%符号用于通配符搜索,基本上,你的代码的最后一行是要求具有的任何记录姓氏以@In参数开头,%符号允许查询中的LIKE查找你提供的文本和任何后面的文本如果你把%符号放在@In参数之前,你会返回任何记录的姓氏以任何@In结尾;相应地,如果您在查询中放入'%'+ @In +'%',它将返回记录,其中@In发生在字符串内的任何位置