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+'%'
,我不完全确定它是做什么的?
任何帮助将非常感激。
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+'%'
,我不完全确定它是做什么的?
任何帮助将非常感激。
这意味着选择所有名称具有 In 前缀的学生
在like 子句中有两个可能的占位符。
%
_
%
意思是“任意数量的字符,0个或更多”
意思是“_
一个字符”。
将@In+'%'
字符串 in@In
和连接起来%
,这意味着该列以任何 in @In
is 开头并以任何或只是 in 中的字符串结尾@In
。
另一个例子:
foo like '%ab_d'
搜索 foo 列以任何内容开头并以例如“abcd”或“abxd”结尾的所有行
它用于过滤记录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
在 SQL 中,% 符号用于通配符搜索。基本上,您的代码的最后一行是询问任何以@In 参数开头的姓氏的记录。% 符号允许查询中的 LIKE 查找您提供的文本以及出现在它之后的任何文本。如果您将 % 符号放在 @In 参数之前,您将返回姓氏以 @In 结尾的任何记录;相应地,如果您在查询中输入 '%' + @In + '%' ,它将返回 @In 出现在字符串中任何位置的记录