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+'%',我不完全确定它是做什么的?

任何帮助将非常感激。

4

4 回答 4

0

这意味着选择所有名称具有 In 前缀的学生

于 2013-03-06T12:18:36.457 回答
0

在like 子句中有两个可能的占位符。

  • %
  • _

%意思是“任意数量的字符,0个或更多”

意思是“_一个字符”。

@In+'%'字符串 in@In和连接起来%,这意味着该列以任何 in @Inis 开头并以任何或只是 in 中的字符串结尾@In

另一个例子:

foo like '%ab_d'

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

于 2013-03-06T12:22:51.780 回答
0

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

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

lname
------
Jackson
James
Robert

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

lname
------
Jackson
James
于 2013-03-06T12:28:12.387 回答
0

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

于 2013-03-06T12:34:04.680 回答