1

特定のセクションや他の検索条件から学生のリストを取得したい。私はこれをやっています:-

declare @sectionId int, @name varchar
select @sectionId=23
select @name='a'

select UserId, FirstName from StudentMaster
Where FirstName Like @name and UserId IN
(
  select UserId from StudentMaster
  Intersect
  select StudentId from StudentInSections where SectionId=@sectionId
)

しかし、それは正しい答えを与えていません。Userid条件のみを記述した場合、正しく機能しますが、検索条件全体を含むリストを取得する必要があります。私を助けてくれる人はいますか?

4

2 に答える 2

0

問題はLIKEオペランドです。もしそうなら、これ@nameは名前がまた'a'はである学生のみを返します。「a」で始まる学生名が必要な場合は、ワイルドカード「%」を追加する必要があります'a''A'

FirstName LIKE 'a%'

(MS Accessなどの一部のSQLダイアレクトは、「%」の代わりにワイルドカード「*」を使用します。)

大文字と小文字を区別する/区別しない検索に関する注意。SQL方言と列に使用される照合に応じて、検索では大文字と小文字が区別されます。大文字と小文字を区別して検索したくない場合(つまり、名前が「a」または「A」で始まる学生を検索したい場合)、次のように実行できます。

UPPER(FirstName) LIKE 'A%'

またはSQL-Server上

FirstName COLLATE UTF8_GENERAL_CI LIKE '%a'

CIは大文字と小文字を区別しないことを意味します。

于 2012-12-07T12:57:37.287 に答える
0
select sm.UserId, sm.FirstName from StudentMaster sm
    inner join StudentInSections ss on ss.StudentId = sm.UserId
Where sm.FirstName Like @name
    and ss.SectionId = @sectionId

そのようなものが機能するはずです。内部結合の使用方法を学ぶ必要があります。

于 2012-12-07T12:48:26.950 に答える