سؤال

كيف يمكنني اقتطاع 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));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top