سؤال

وأتلقى بعض الحجج إلى إجراء مخزن. هذه الحجج هي في NVARCHAR.

ولدي مشكلة، عندما كنت في حاجة للادلاء بعض من هذه القيم إلى يطفو، لأنها تلقي كما منها مثلا.

و @VALUE1 NVARCHAR (100)

ونعلنChangedValue SETChangedValue = CAST (@ VALUE1 AS تعويم)

ومنها مثلا. @ VALUE1 = "0001"

ويعطي لي مشكلة، كما أنها تتوقع "0.001"

وأنا لا يمكن تغيير شكل المدخلات، ولكن يمكنني بطريقة ما تغييره على الجانب خادم SQL؟ عن طريق تغيير كل شيء "،" ب "." بدلا من ذلك؟

وأطيب التحيات، كين

هل كانت مفيدة؟

المحلول

هل يمكن استخدام @VALUE1 = REPLACE(@VALUE1, ',', '.')

وهذا لا يبدو أمرا فظيعا للقيام على الرغم من!

نصائح أخرى

وكما قال ميتش أنه لا يبدو على ما يرام وأنه سيكون من الأفضل بكثير أن كانت المعلمة المقدمة من نوع تطفو في المقام الأول. وقدم لك الحل أن يحل مشكلتك الآن ولكن كما أشار إلى قد تحصل في بعض المتاعب في المستقبل.

وأفترض أن هذا الإجراء يسمى من قبل بعض التعليمات البرمجية للتطبيق، وأنا أشك في أن هذه الأرقام هي إدخال المستخدم. إذا كان هذا هو الحال بعد ذلك تحويل يجب أن يحدث على مستوى التطبيق كما من شأنها أن تأخذ الرعاية من إعدادات اللغة وهذا هو المكان الوحيد الذي لديه سيطرة على شكل مدخلات المستخدم.

وأنا لست على دراية مع البيانات الخاصة بك، ولكن تأكد من أن لم يكن لديك أي القيم التي هي صالحة بفاصلة مثل 1000. تغيير ذلك إلى 1.000 باستخدام استبدال التغييرات العدد الفعلي تشارك بشكل كبير.

وأود أن إصلاح واجهة المستخدم بحيث أن أعدادا غير صالحة لا يمكن وضعها في هذا المجال. وأود أيضا أن يضع قيدا على الجدول في قاعدة البيانات التي تتطلب عدد لتكون ضمن نطاق معين أو عدد صحيح مرة واحدة لديك البيانات تنظيف. أن البيانات السيئة الطريقة لا يمكن أن ندخل الميدان لتبدأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top