السلام عليكم
عندي حقل رقمي اسمه total في السجلات التالية :
1500.25
950.852
14500.1
1586.64885
فكيف احصل بعبارة select على الكسور فتكون النتيجة :
25
852
1
64885
وشكرا
السلام عليكم
عندي حقل رقمي اسمه total في السجلات التالية :
1500.25
950.852
14500.1
1586.64885
فكيف احصل بعبارة select على الكسور فتكون النتيجة :
25
852
1
64885
وشكرا
؟؟؟
السؤال هذا بنفس الصيغة تماما حليناه من قبل!! هل كان واجبا مدرسيا؟؟
صفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
هذا السؤال خاص بي وانا احتاجه في برنامجي واتمنى منك ان تدلني على الجواب
قمت بتعديل العنوان لجعله أكثر ملاءمة للموضوع
-----------
معذرة على التأخير :s
جرب هذا الإجراء المخزن:
create procedure GetBerightDecimalPoint
@i float
as declare @mystr varchar(1000)
declare @DotPlace int
declare @SpacePlace int
set @mystr=convert(varchar(1000), @i)
set @mystr=@mystr+' '
set @DotPlace=patindex('%.%', @mystr)
set @SpacePlace=patindex('% %', @mystr)
select substring(@mystr, @DotPlace+1, @SpacePlace) as NumRightPoint
goحيث نقوم باستقبال العدد في شكل متغير من نوع float
المتغير @mystr هو لتخزين العدد في شكل string
والمتغيرين DotPlace@ و SpacePlace@ هما للبحث عن موضع الفاصلة العشرية ونهاية العدد على الترتيب.
ثم نقوم بتحويل العدد لstring ونبحث عن موضع كل من الفاصلة العشرية ونهاية العدد باستعمال الدالة patindex التي تقوم بالبحث عن pattern معين داخل النص الممرر لها (تعادل تقريبا InStr في VB6/net و IndexOf في Java)
ثم يقوم الإجراء باقتطاع الجزء الواقع ما بين الموضع التالي للفاصلة العشرية وحتى نهاية العدد باستعمال الدالة substring.
مشكلة هذا الإجراء أنه باستعمال النوع decimal من 23 و 8 لاستقبال العدد، أي 23 خانة منها 8 خانات عشرية، فسيملأ الخانات العشرية الفارغة أصفارا، أما إذا جعلنا عدد الخانات العشرية أقل فسيلجأ للتقريب.
نفس الحال باستعمال النوع real سواء بتحديد تفاصيل الخانات أم بدون تحديدها.
أما باستعمال النوع float لاستقبال العدد، فسيستعمل التقريب لخانتين فأقل في حال كانت مجمل خانات العدد أكثر من 6 خانات.
على أي حال، مثال لتنفيذ هذا الإجراء المخزن:
exec GetBerightDecimalPoint 1234.252
-------------------------------
نجحت المحاولة باستخدام النوع sql_variant لاستقبال العدد. :o
في انتظار آرائكم
;)
تم تعديل هذه المشاركة بواسطة walcom في 20 فبراير 2006 في 13:42
فكر بطريقة أخرى
هذا الموضوع مغلق.