اقطع varchar إلى طول محدد في Derby تلقائيًا
سؤال
كيف يمكنني اقتطاع Varchar إلى طول حقل الجدول تلقائيًا في Derby باستخدام SQL؟
أن تكون محددًا:
CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES ('1234');
سوف يرمي sqlexception:
A truncation error was encountered trying to shrink VARCHAR '123' to length 2.
هل هناك طريقة سهلة لقمع هذا الاستثناء؟
المحلول
لا ، يجب عليك تقطيعها بعد التحقق من بيانات التعريف. أو إذا كنت لا تريد التحقق من بيانات التعريف في كل مرة ، فيجب عليك الاحتفاظ بكل من رمزك وقاعدة البيانات الخاصة بك متزامنة. ولكن هذه ليست مشكلة كبيرة ، إنها ممارسة معتادة في المدققين.
نصائح أخرى
يمكنك تقليم varchar قبل إدخاله. استخدم وظيفة TRIM في برنامج Insert/الإجراء الخاص بك.
لست على دراية بـ Derby ، لكن في MSSQL أفعل نفس الشيء تمامًا ، باستخدام TRIM لتجنب خطأ الاقتطاع (فقط حيث لا أحتاج إلى البيانات الكاملة) ، من الأفضل زيادة طول Varchar
يمكنك استخدام SUBSTR
:
CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES (SUBSTR('1234', 1, 2));
في حال كنت تستخدم عبارات معدّة:
INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
لا تنتمي إلى StackOverflow