View Full Version : راهنمایی برای نوشتن یک شرط با SQL در دلفی 2009
saeed6162
جمعه 11 تیر 1389, 13:38 عصر
قبلا این تاپیک رو گذاشته بودم ولی چون نگفتم که نوع بانک چیه تاپیکم به قسمت بانک های اطلاعاتی منتقل شد ، ولی هم بانک Access هست و هم برنامم با delphi 2009
پس دوباره تو این قسمت سوالم رو مطرح می کنم :
یک table دارم که یکی از ستون هاش به نام MixCode ، از نوع اعداد هست که همه مقادیری که توی این فیلد هستند 3 رقمی اند.
هر کدوم از این ارقام برای برنامه من یک مفهوم دارند ، فرض کنید می خوام یک query بگیرم که همه مقادیری رو که رقم وسط اونها صفر هست رو به من نشون بده باید چی بنویسم.
دوباره این نکته رو می گم که نوع این فیلد رشته ای نیست و عدده، آیا راه حلی به غیر از تغییر دادن جنس این فیلد به رشته وجود داره؟
و یا همه مقایری رو نمایش بده که رقم یکان اونها 3 و رقم صدگان اونها 9 (بدون توجه به اینکه رقم دهگان چی باشه) باشه. برای این شرط چی بنویسم؟
AdoQuery1.Sql.text:='Select MixCode From MyTable Where ????????????' ;
attarizi
دوشنبه 14 تیر 1389, 17:15 عصر
salam
masalan bara inke ragham aval 0 bashe ino benevis
AdoQuery1.Sql.text:='Select MixCode From MyTable Where Num Mod 10 = 0
ya bara ragham dovom barabar 2 ino benevis
AdoQuery1.Sql.text:='Select MixCode From MyTable Where (Num div 10)mod 10 = 2
ya bara ragham sevom barabar 3 ino benvis
AdoQuery1.Sql.text:='Select MixCode From MyTable Where (Num div 100)mod 10 = 2
omidvaram be dardeton bokhore
pezhvakco
سه شنبه 15 تیر 1389, 12:21 عصر
درود :
روش attarizi (http://barnamenevis.org/forum/member.php?u=57878) ، روش جالبیه ؟
با کد دستور های زیر هم یه امتحان کن >
LEFT(column, number) جدا کردن تعداد کاراکتر مشخص از سمت چپ مقادير ستون
RIGHT(column, number) جدا کردن تعداد کاراکتر مشخص از سمت راست مقادير ستون
SELECT * FROM Table1
WHERE (LEFT(MixCode, 1) = 3)
فکر خوش .
saeed6162
سه شنبه 15 تیر 1389, 14:55 عصر
salam
masalan bara inke ragham aval 0 bashe ino benevis
AdoQuery1.Sql.text:='Select MixCode From MyTable Where Num Mod 10 = 0
ya bara ragham dovom barabar 2 ino benevis
AdoQuery1.Sql.text:='Select MixCode From MyTable Where (Num div 10)mod 10 = 2
ya bara ragham sevom barabar 3 ino benvis
AdoQuery1.Sql.text:='Select MixCode From MyTable Where (Num div 100)mod 10 = 2
omidvaram be dardeton bokhore
ممنون از راهنمایتون
تست کردم ولی متاسفانه جواب درستی نداد و همه مقادیر صفر رو بر می گردوند.
saeed6162
سه شنبه 15 تیر 1389, 14:57 عصر
درود :
روش attarizi (http://barnamenevis.org/forum/member.php?u=57878) ، روش جالبیه ؟
با کد دستور های زیر هم یه امتحان کن >
LEFT(column, number) جدا کردن تعداد کاراکتر مشخص از سمت چپ مقادير ستون
RIGHT(column, number) جدا کردن تعداد کاراکتر مشخص از سمت راست مقادير ستون
SELECT * FROM Table1
WHERE (LEFT(MixCode, 1) = 3)
فکر خوش .
تشکر از راهنماییتون
با اینکه دقیقا اون چیزی رو که می خواستم نبود ولی خیلی می تونه کمکم بکنه
ممنون
حسین شهریاری
سه شنبه 15 تیر 1389, 21:22 عصر
میشه از تابع substring استفاده کرد.حتی اگه نوع فیلد شما کاراکتری نباشه میتونین پس از تبدیل نوع شرط را اعمال کنید.یعنی همونجا روبروی where عمل cast را انجام بدید و از تابع فوق استفاده کنید
saeed6162
یک شنبه 20 تیر 1389, 15:59 عصر
میشه از تابع substring استفاده کرد.حتی اگه نوع فیلد شما کاراکتری نباشه میتونین پس از تبدیل نوع شرط را اعمال کنید.یعنی همونجا روبروی where عمل cast را انجام بدید و از تابع فوق استفاده کنید
ممنونم از راهنماییتون
ولی متاسفانه من خیلی با syntax زبان sql آشنا نیستم
اگه ممکنه با مثال توضیح بدید:
تشکر فراوان
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.