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

كيف استخدم الدالة Soundex للبحث عن أقرب رقم مشابه

بدأه AboMoayad في 9 فبراير 2008 · 1 رد · 1,197 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

وجزاكم الله خير

اللهم أطل عمري وأحسن عملي واختم بالشهادة أجلي

#2

التابع soundex يقوم بإعادة كود للكلمة بما يتناسب مع طريقة لفظها, لاحظ مثلاً النتائج التالية:

PRINT soundex('calendar') -- C453
PRINT soundex('collender') -- C453
PRINT soundex('calenda')	-- C453
PRINT soundex('colender') -- C453

الان إذا اردت البحث في حقل ما عن كلمات مشابهة يمكنك عمل مثل المثال التالي فهو يقوم بمقارنة الكود الناتج عن التابع Soundex مع الكود الناتج عن التابع Soundex للكلمة المراد البحث عنها...

SELECT
	Name,
FROM
	AnyTable
WHERE 
soundex(FirstName) = soundex('calendar')

أو يمكنك استخدام التابع difference حيث نتيجة هذا التابع سوف تكون عبارة عن رقم Integer من 0 إلى 4

صفر تعني أنّ التقارب بين الكلمتين سيئ جداً , بينما 4 تعني أنّ التقارب بين الكلمتين كبير جداً

SELECT
 Name
 difference('calendar', Name) AS Difference
FROM
 AnyTable
ORDER BY
 difference('calendar', Name) DESC

إذا اردت عمل شيئ قريب من محركات البحث, بإظهار احتمالات للمستخدم في حال ظهور نتائج قليلة او معدومة يمكنك استخدام Top كمايلي:

SELECT TOP 1
 'Did you mean "' + Name+ '"?' AS Message
FROM
 AnyTable
ORDER BY
 difference('calendar', Name) DESC
1

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…