ورود

View Full Version : استفاده از if در سلكت sql



TinaRezai
شنبه 15 مهر 1391, 13:13 عصر
ميخوام يه دستور بنويسم طوريكه در سلكت مثلا اگر 1 بود بجاش بنويسه ايراني اگر 2 بود بنويسه خارجي فرض كنيد فيلداي من ايناست:
id-meliat-name-famil
اما مليت 1 و 2 ذخيره شده و الان كه ميخوام به كاربر نشون بدم بجاي 1-2 اون كلمات رو كه گفتم بياد

morteza271
شنبه 15 مهر 1391, 13:18 عصر
اینطوری :

Select id,name,famil, CASE meliat WHEN 1 THEN 'ایرانی' WHEN 2 THEN 'خارجی' END AS meliatText
From Persons

AmirGhasemi
شنبه 15 مهر 1391, 13:19 عصر
منظورتون را شفاف تر بيان كنيد!! شما مي خواهيد اين عمل را در سمت ديتابيس انجام دهيد يا اينكه بعد از اينكه از ديتابيس خوند و مي خواست در فرم سي شارپ شما نمايش دهد اين عمل صورت بگيرد؟!!؟
سمت ديتابيس يا سمت سي شارپ را مشخص كنيد براي ما؟

AmirGhasemi
شنبه 15 مهر 1391, 13:26 عصر
اين براي سمت ديتابيسه اما راه بهتر اينه كه شما ديتا را همين طوري كه در ديتابيس هست بخوني بهعد سمت سي شارپ آنها را عوض كني با مقادير دلخواه خودت!! تغيير ديتا سمت ديتابيس كار عقلاني نيست!

Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END



حالا با توجه به دستور كلي بالا مثال شما مي شود:

Select id,name,famil, CASE meliat WHEN 1 THEN 'ایرانی' WHEN 2 THEN 'خارجی' END AS meliatText

From Persons

TinaRezai
شنبه 15 مهر 1391, 13:41 عصر
اين براي سمت ديتابيسه اما راه بهتر اينه كه شما ديتا را همين طوري كه در ديتابيس هست بخوني بهعد سمت سي شارپ آنها را عوض كني با مقادير دلخواه خودت!! تغيير ديتا سمت ديتابيس كار عقلاني نيست!

Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END



حالا با توجه به دستور كلي بالا مثال شما مي شود:

Select id,name,famil, CASE meliat WHEN 1 THEN 'ایرانی' WHEN 2 THEN 'خارجی' END AS meliatText

From Persons

ممنون دوست عزيز اما ما ديتا رو سمت ديتابيس تغيير نداديم فقط يه select ازش گرفيتم نوعش رو عوض كرديم.
فكر ميكنم درستش هم همون سمت ديتا بيس باشه بهتره مثلا اگر من 100000 ركورد داشته باشم و سمت سي شارپ بخوام عوض كنم خيلي زمان بر باشه. شما چه روشي پيشنهاد ميكنين؟

AmirGhasemi
شنبه 15 مهر 1391, 14:02 عصر
اما در مورد اينكه گفتم سمت ديتابيس عوض شدن كار عقلاني نيست! منظور ديگري دارم!!
مثلا بعضي از دوستان ديده ايم كه پارامتر بولين را در سمت ديتابيس تبديل به يك مقدار استرينگ مي كنن و نتيجه را بر مي گردانن! منظور من فارغ از When است!! اين دوستان ابتدا ديتاي دورن جدول را با ديتاي ديگري جايگزين مي كنن و بعد نتيجه را بر مي گردونن! كه منظور من هقلاني نبودن اين كارهاست! نمونه اش را هم در فروم مي توانيد به وفور پيدا كنيد!!

AmirGhasemi
شنبه 15 مهر 1391, 14:13 عصر
اقا از اون زمانيكه اين وب سايت شده محل جمع آوري تشكر !! اين شده روزگار ما!! ما قصد تلف كردن وقت كسي را نداشتيم!! بگذاريد به حساب خنگي ما!!!