لدي جدول رقم الصنف وهو قد يكون رقمي فقط او حرفي او معا مثل
1
2
3
10
11
12
13
21
31
32
a9-44
.
cd-52s
24fg-s
awa
.
.
ولنفترض اني اريد الاصناف بين 1 الى 10 فيقوم فقط بجلب 1 و 10 وهذا خطأ ارجوكم المساعدة سواء في البحث ببين قيمتين او البحث
لدي جدول رقم الصنف وهو قد يكون رقمي فقط او حرفي او معا مثل
1
2
3
10
11
12
13
21
31
32
a9-44
.
cd-52s
24fg-s
awa
.
.
ولنفترض اني اريد الاصناف بين 1 الى 10 فيقوم فقط بجلب 1 و 10 وهذا خطأ ارجوكم المساعدة سواء في البحث ببين قيمتين او البحث
للبحث بين قيمتين نستخدم كلمة Between انظر لهذا المثال من ال Books Online الذى سيقوم بعرض معرفات الكتب و وحدات بيعها ما بين 4095 و 12000
USE pubs GO SELECT title_id, ytd_sales FROM titles WHERE ytd_sales BETWEEN 4095 AND 12000 GO
الناتج كما يلى
title_id ytd_sales -------- ----------- BU1032 4095 BU7832 4095 PC1035 8780 PC8888 4095 TC7777 4095 (5 row(s) affected)
يمكنك ايضاً ان تستخدم علامات > او < كما فى المثال للبحث بين قيمه اصغر من قيمه و اكبر من قيمه اخرى فى نفس الوقت
USE pubs GO SELECT title_id, ytd_sales FROM titles WHERE ytd_sales > 4095 AND ytd_sales < 12000 GO
و الناتج يظهر بهذا الشكل
title_id ytd_sales -------- ----------- PC1035 8780
تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 19 مارس 2005 في 13:02
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
شكرا اخي على الرد
ولكن اذا كان الجقل يحوي قيم متنوعة قد تكون ارقام وقد تكون حروف او بهما معا فهذه الطريقة لا اتوقع انها صحيحة
اقتباسذا كان الجقل يحوي قيم متنوعة قد تكون ارقام وقد تكون حروف او بهما معا فهذه الطريقة لا اتوقع انها صحيحة
نعم كلامك صحيح لا يمكن وقتها البحث بين قيمتين فى هذه الحاله و لكن يمكن البحث باستخدام Like للبحث عن قيمه مشابهه لمعيار البحث
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
الحل الذي لدي معقد نوعاً ما و لكنه يفي بالغرض.
* قم ببرمجة User Defined Function تقوم بتعبئة القيمة المدخلة بفراغات من اليمين. مثلاً اذا كان حجم الحقل 5 يتم تحويل القيمة '10' الى '---10' حيث - هى فراغ. لنسمه مثلاً PACK_SPACE.
* قم باستعمال هذه الدالة في الكويري هكذا
SELECT * FROM TBL WHERE PACK_SPACE(CODE)>=PACK_SPACE('1') AND PACK_SPACE(CODE)<=PACK_SPACE('10')هذه الطريقة مجربة و تعمل و اذا كان لديك أي استفسار آخر فأنا في الخدمة.
الأخ fahedksa
حاولت محاكاة وضعك على قاعدة بيانات تجريبية ووصلت للآتي:
select * from categories where cat_id between '1' and '10'
هذا الاستعلام سيرجع لك كل السجلات التي فيها قيمة الحقل cat_id يبدأ بالرقم 1 وحتى 9. يعني أنها سترجع لك السجلات التالية (على حسب السجلات التي ذكرتها):
1
2
3
24fg-s
لكنه ايضا سيرجع السجل 10 لأنه مشتمل على 1، ولن يرجع السجل 1، لذا الأفضل أن يكون الاستعلام هكذا:
select * from categories where cat_id between '0' and '11'
بالتوفيق بإذن الله.
تم تعديل هذه المشاركة بواسطة walcom في 25 فبراير 2005 في 12:32
فكر بطريقة أخرى
هذا الموضوع مغلق.