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+'%'
、私はそれが何をするのか完全にはわかりませんか?
どんな助けでも大歓迎です。
like 節では、2 つのプレースホルダーが可能です。
%
_
は%
「0文字以上の任意の文字数」を意味します
_
は「一文字」という意味です。
は文字列 inと を@In+'%'
連結します。これは、列が in の文字列で始まり、文字列 in の文字列で終わることを意味します。@In
%
@In
@In
もう一つの例:
foo like '%ab_d'
foo 列が何かで始まり、"abcd" や "abxd" などで終わるすべての行を検索します。
SQL では、ワイルド カード検索に % 記号が使用されます。基本的に、コードの最後の行は、@In パラメータが何であれ、姓が始まるすべてのレコードを要求しています。% 記号を使用すると、クエリ内の LIKE で、指定したテキストとその後にあるテキストを検索できます。@In パラメータの前に % 記号を付けると、姓が @In で終わるすべてのレコードが返されます。同様に、クエリに '%' + @In + '%' を入力すると、@In が文字列内の任意の場所にあるレコードが返されます。
これは、名前が In プレフィックスを持つすべての学生を選択することを意味します
レコードをフィルタリングするために使用されます理解を深めるために、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+'%'
に始まる lnames になり'Ja'
ます。(つまり;で始まっていないため、'Robert'
除外されます。'Ja'
lname
------
Jackson
James