ورود

View Full Version : انتخاب رکوردها بر اساس یک فیلد که توسط متغیر مشخص شده



saghari
چهارشنبه 18 خرداد 1390, 19:57 عصر
با سلام
فرض کنید یک table داریم که دارای سه فیلد
کد دانش آموز studentid
نام دانش آموز studentName
نام خانوادگی دانش آموز studentfamily یاشه
و یک متغیر تعریف میکنیم باسم FiledName@
حالا میخوام رکوردهایی رکوردهایی رو برگردونیم که مقدار نام یا نام خانوادگی اونها برایر مثلا رضا باشه و اینکه جستجو برابر نام باشه یا نام خانوادگی رو میخواهیم از طریق متغیر مشخص کنیم.
من دستور زیر رو تست کردم ولی هیچ رکوردی رو بر نمیگردونه


DECLARE @FiledName nvarchar(50)
SET @FiledName='studentName'
Select * From Student Where @FiledName Like 'رضا'


قبلا از توجه شما ممنونم

Reza_Yarahmadi
چهارشنبه 18 خرداد 1390, 21:59 عصر
دستور شما مقدار متغیر رو با 'رضا' مقایسه میکنه نه اینکه مقدار داده های فیلد مورد نظر رو با 'رضا' مقایسه کنه.
برای کاری که میخواید انجام بدید یا باید از Dynamic Query استفاده کنید یا با شرط فیلدها رو چک کنید و با توجه به فیلد ارسال شده جستجوی مورد نظر استفاده بشه.
Dynamic Query
Declare @Str Nvarchar(MAX)

DECLARE @FiledName nvarchar(50)
SET @FiledName='studentName'

Set @Str = 'Select * From Student Where ' + @FiledName + ' Like ''رضا'''

Exec SP_ExecuteSql @Str
چک کردن نوع فیلد
DECLARE @FiledName nvarchar(50)
SET @FiledName='studentName'

IF(@FiledName = 'studentName')
Select * From Student Where studentName Like N'رضا'
ELSE IF (@FiledName = 'studentfamily ')
Select * From Student Where studentfamily Like N'رضا'