PDA

View Full Version : سوال: در لود شدن فرم دستور sql بنویسید که جدول table1 و فیلد w مقدار1را به آبی و مقدار 2 را بهS تغییر دهد؟



mohammadriano
پنج شنبه 01 تیر 1391, 04:03 صبح
در لود شدن فرم دستور sql(کوئری) بنویسید که از جدول table1 و فیلد w مقدار 1 را به آبی و مقدار 2 را به S تغییر دهد؟ البته برای همیشه بانک را تغییر ندهد فقط یک کوئری برای نمایش در گرید.

Select * From Table1 where ????

alimanam
پنج شنبه 01 تیر 1391, 04:53 صبح
با سلام

سوال شما چقدر شبیه سوال های کتابی سر کلاس درسه .... به هر حال :متفکر:

Select field1 As 'Orginal Data', Replace(Replace(Field1,'1','Blue'),'2','S ') As 'After Edited' FROM Table1

موفق باشید./

Mani_rf
پنج شنبه 01 تیر 1391, 20:12 عصر
ترم که تموم شده!!!
با احترام به پاسخ علی جان؛
از این روش هم می توانید استفاده کنید.

Select case w when 1 then 'آبی' else 's' end as w_Changed From Table1

alimanam
پنج شنبه 01 تیر 1391, 20:58 عصر
با سلام

مانی جان , فکر نمیکنم در این مثالی که دوستمون درخواست داده بود بشه به سادگی از این روشی که گفتین استفاده کرد ؟! چرا ؟ چون نوع فیلدی که استفاده میکنیم به احتمال زیاد از نوع nvarchar خواهد بود و اگه بااین شرطی که گفتین بخوایم کار Replace نمودن رو انجام بدیم عملاً به مشکل بر میخوره ! مگر اینکه بخوایم از تابع دیگه ایی برای تبدیل عدد به رشته استفاده کنیم که به نظرم کمی کار اضافه ایی خواهد بود چون تابع Replace دقیقاً در مستندات Microsoft برای همین مورد نوشته شده . در کل از اینکه لطف کردین و روش دیگری به من یاد دادین سپاسگذارم .

Conversion failed when converting the nvarchar value 'this is 1 test for S and K' to data type int.

موفق باشید./

alimanam
پنج شنبه 01 تیر 1391, 21:11 عصر
با سلامی دوباره

الان که بیشتر دقت کردم بعد از اینکه کدی که مانی جان رو کمی تغییر دادم تقریبا نتیجه خوبی نمیداد شاید من درست انجام نداده باشم بهتر خود مانی جان بیشتر توضیح بده , چون وقتی از شرط استفاده کردم کل محتویات رکوردها رو به s تغییر میداد در صورتی که باید تنها به جای عدد 1 مقدار " آبی " و به جای عدد 2 مقدار " s " جایگزین بشه .

http://up98.org/upload/server1/02/j/hsy4qvigxsrb7hodr37o.jpg


Select case field1 when '1' then 'آبی' else 's' end as w_Changed From Table1

Mani_rf
پنج شنبه 01 تیر 1391, 21:17 عصر
با سلام

مانی جان , فکر نمیکنم در این مثالی که دوستمون درخواست داده بود بشه به سادگی از این روشی که گفتین استفاده کرد ؟! چرا ؟ چون نوع فیلدی که استفاده میکنیم به احتمال زیاد از نوع nvarchar خواهد بود و اگه بااین شرطی که گفتین بخوایم کار Replace نمودن رو انجام بدیم عملاً به مشکل بر میخوره ! مگر اینکه بخوایم از تابع دیگه ایی برای تبدیل عدد به رشته استفاده کنیم که به نظرم کمی کار اضافه ایی خواهد بود چون تابع Replace دقیقاً در مستندات Microsoft برای همین مورد نوشته شده . در کل از اینکه لطف کردین و روش دیگری به من یاد دادین سپاسگذارم .

Conversion failed when converting the nvarchar value 'this is 1 test for S and K' to data type int.

موفق باشید./

سلام.
علت این که این رو مطرح کردم این بود که فکر میکنم زمان اجرای اون به نسبت Replace بالاتر باشه؛
+ اینکه فکر میکنم منظرو استاد این باشه که نوع فیلد Enumeration است و حالا میخواهیم موقع نمایش مقدار رشته جایگزینش کنیم و نمایش بدیم ؛
+ اینکه شما فرض کن که بجای 2مورد 1 و 2 تو دیتابیس از 0 تا 17 مقدار های Enumeration باشند که باید در هنگام نمایش تبدیل شوند که با Replace فکر نمیکنم خیلی راحت و منطقی به نظر بیاد.

Select Case w
When 0 then 'None'
When 1 then 'Val1' When 2 then 'Val2'
When 3 then 'Val3' When 4 then 'Val4'
When 5 then 'Val5' When 6 then 'Val6'
When 7 then 'Val7' When 8 then 'Val8'
When 9 then 'Val9' When 10 then 'Val10'
When 13 then 'Val13' When 12 then 'Val12'
When 15 then 'Val15' When 14 then 'Val14'
When 17 then 'Val17' When 16 then 'Val16'
end As w_NewVal
From Table1


+ اینکه اگر هم مقدار درون دیتابیس nVarChar باشه هم میتونی مقدار شرط Case رو رشته بفرستی: '1' به همین راحتی.
فکر نمیکنم که با همچین مشکلی بر بخوری. این رو هم درنظر بگیر که ساختار دیتابیس کاملا در اختیار برنامه نویسه و خودش میدونه که نوع داده رو چی تعریف کرده و شرط ها رو بر اساس اون تنظیم میکنه.

البته این ها فقط نظر شخصی و تجربه منه....

alimanam
پنج شنبه 01 تیر 1391, 21:28 عصر
با سلامی 3 باره


+ اینکه فکر میکنم منظرو استاد این باشه که نوع فیلد Enumeration است و حالا میخواهیم موقع نمایش مقدار رشته جایگزینش کنیم و نمایش بدیم ؛

بله دقیقاً , اگر از نوع Enumeration باشه مشکلی بوچود نمیاد وبا " مقدار شرط Case رو رشته بفرستی " به راحتی مشکل برطرف میشه . من کلاً فرض رو بر این گرفته بودم که نوع فیلد nvarchar و به صورت کلی از نوع رشته در نظر گرفته بودم چون دقیقاً نمیدونستم محتویات این فیلد از منظر طول رشته و امثاله به چه صورت خواهد بود . در کل از نظرات فنی شما کمال تشکر رو دارم .

Mani_rf
پنج شنبه 01 تیر 1391, 21:31 عصر
با سلامی دوباره

الان که بیشتر دقت کردم بعد از اینکه کدی که مانی جان رو کمی تغییر دادم تقریبا نتیجه خوبی نمیداد شاید من درست انجام نداده باشم بهتر خود مانی جان بیشتر توضیح بده , چون وقتی از شرط استفاده کردم کل محتویات رکوردها رو به s تغییر میداد در صورتی که باید تنها به جای عدد 1 مقدار " آبی " و به جای عدد 2 مقدار " s " جایگزین بشه .

http://up98.org/upload/server1/02/j/hsy4qvigxsrb7hodr37o.jpg


Select case field1 when '1' then 'آبی' else 's' end as w_Changed From Table1


رو دیتابیس خودم تست کردم مشکلی نداشت.