"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تقسيم الأوتار بأمان في T-SQL باستخدام المحددات؟

كيفية تقسيم الأوتار بأمان في T-SQL باستخدام المحددات؟

نشر في 2025-03-24
تصفح:449

How to Safely Split Strings in T-SQL Using Delimiters?

سلسلة قطاع بناء على محدد في T-SQL

سؤال:

في 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