الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

البحث في حقل حرفي ارجوا المساعدة

مغلق
بدأه fahedksa في 20 فبراير 2005 · 5 رد · 656 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي جدول رقم الصنف وهو قد يكون رقمي فقط او حرفي او معا مثل

1

2

3

10

11

12

13

21

31

32

a9-44

.

cd-52s

24fg-s

awa

.

.

ولنفترض اني اريد الاصناف بين 1 الى 10 فيقوم فقط بجلب 1 و 10 وهذا خطأ ارجوكم المساعدة سواء في البحث ببين قيمتين او البحث

#2

للبحث بين قيمتين نستخدم كلمة 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

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

شكرا اخي على الرد

ولكن اذا كان الجقل يحوي قيم متنوعة قد تكون ارقام وقد تكون حروف او بهما معا فهذه الطريقة لا اتوقع انها صحيحة

#4
اقتباس
ذا كان الجقل يحوي قيم متنوعة قد تكون ارقام وقد تكون حروف او بهما معا فهذه الطريقة لا اتوقع انها صحيحة

نعم كلامك صحيح لا يمكن وقتها البحث بين قيمتين فى هذه الحاله و لكن يمكن البحث باستخدام Like للبحث عن قيمه مشابهه لمعيار البحث

الأستعلام بواسطة لغة SQL, البحث عن جزء من الأسم

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#5

الحل الذي لدي معقد نوعاً ما و لكنه يفي بالغرض.

* قم ببرمجة 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')

هذه الطريقة مجربة و تعمل و اذا كان لديك أي استفسار آخر فأنا في الخدمة.

#6

الأخ 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

فكر بطريقة أخرى

هذا الموضوع مغلق.

مواضيع مشابهة