سؤال:
في SQL ، يمكن أن يؤدي استخدام السلاسل الفرعية لتقسيم السلاسل على أساس المحددات إلى حدوث أخطاء عندما لا يكون المحدد موجودًا. الرمز التالي يوضح هذا:
SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
SUBSTRING(myColumn, CHARINDEX('/', myColumn) 1, 1000) AS LastName
FROM MyTable
عند مواجهة سطر بدون محدد ، فإنه يرمي خطأ: "المعلمة الطول التي تم تمريرها إلى وظيفة التسجيل اليسرى غير صالحة."
حل:
لحل هذه المشكلة ، يمكنك استخدام عبارة الحالة في وظيفة السلسلة كما هو موضح أدناه:
SELECT SUBSTRING(myColumn, 1, CASE CHARINDEX('/', myColumn)
WHEN 0
THEN LEN(myColumn)
ELSE CHARINDEX('/', myColumn) - 1
END) AS FirstName
,SUBSTRING(myColumn, CASE CHARINDEX('/', myColumn)
WHEN 0
THEN LEN(myColumn) 1
ELSE CHARINDEX('/', myColumn) 1
END, 1000) AS LastName
FROM MyTable
يستخدم هذا الكود المحدث Charindex لتقييم موضع المحدد. إذا لم يتم العثور على المحدد (Returns Charindex 0) ، فإن عبارة الحالة تستخدم طول السلسلة للتأكد من أن السلسلة بأكملها تعامل كاسم. في حالة وجود محدد ، فإنه يحسب موضع الحرف الأول بعد تحديده كفهرس بدء الاسم الأخير. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3