Web design and hosting, database, cloud and social media solutions that deliver business results
  • حلول الأعمال
    • خدمات قاعدة البيانات
      • أدوات
    • تصميم الموقع
      • جزيرة وايت
    • الخدمات السحابية
    • وسائل الاعلام الاجتماعية
  • الأكاديمية
    • تعلم قاعدة البيانات
      • استخدام SQL Server Pivot-Unpivot
      • استخدام وظائف خادم SQL
      • باستخدام SQL Server التواريخ
      • باستخدام بيانات SQL
      • صيانة خادم SQL
    • تعلم تصميم المواقع
  • معلومات عنا
    • الفريق
      • تشيستر كوبربوت
      • جافين كلايتون
      • سونيل كومار
      • علي الأمين
    • محفظة
    • مقالات
    • وظائف
عربى (AR)čeština (CS)Deutsch (DE)English (EN-US)English (EN-GB)Español (ES)فارسی (FA)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

وظيفة خادم SQL لسلسلة السلاسل

وظيفة خادم SQL مرنة وقابلة لإعادة الاستخدام لإرجاع سلسلة نصية محددة ومنسقة من مجموعة من الأعمدة أو المتغيرات

عرض نص جيد التنسيق

استخدام وظائف خادم SQL

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

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

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

المزيد: تقوم وظيفة SQL Server بتقسيم النص إلى صفوف بيانات

SQL

ALTER FUNCTION dbo.TextConc(@Text NVARCHAR(MAX),@Delim CHAR(1),@Sep CHAR(2)) RETURNS NVARCHAR(MAX) WITH SCHEMABINDING AS BEGINDECLARE @Str NVARCHAR(MAX)SELECT @Str=COALESCE(@Str+@Sep,'')+REPLACE(WordStr,@Delim,'')FROM dbo.TextToRows(@Delim,@Text)WHERE WordStr<>''RETURN REPLACE(@Str,@Sep+@Sep,@Sep)ENDGO

بيانات الاختبار

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

SQL

DECLARE @Address TABLE(AddressName NVARCHAR(100),AddressL1 NVARCHAR(100),AddressL2 NVARCHAR(100),AddressL3 NVARCHAR(100),AddressCity NVARCHAR(100),AddressCounty NVARCHAR(100),AddressCountry NVARCHAR(100),AddressPostCode NVARCHAR(100))INSERT INTO @AddressSELECT 'Mountain View','1600 Amphitheatre Parkway',NULL,NULL,'Mountain View','California','United States','94043'INSERT INTO @AddressSELECT 'London','1-13 St Giles High St',NULL,NULL,'London','London','United Kingdom','WC2H 8LG'SELECT dbo.TextConc(ISNULL(AddressName,'')+','+ISNULL(AddressL1,'')+','+ISNULL(AddressL2,'')+','+ISNULL(AddressL3,'')+','+ISNULL(AddressCity,'')+','+ISNULL(AddressCounty,'')+','+ISNULL(AddressCountry,'')+','+ISNULL(AddressPostCode,''),',',', ')FROM @Address

Results

Mountain View, 1600 Amphitheatre Parkway, Mountain View, California, United States, 94043
London, 1-13 St Giles High St, London, London, United Kingdom, WC2H 8LG

استمر في البيانات الموجودة في الجدول

نظرًا لأننا أنشأنا البيانات باستخدام SCHEMABINDING ، يمكننا أيضًا إلحاقها بجدول كعمود محسوب.

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

SQL

CREATE TABLE TestAddress(AddressName NVARCHAR(100),AddressL1 NVARCHAR(100),AddressL2 NVARCHAR(100),AddressL3 NVARCHAR(100),AddressCity NVARCHAR(100),AddressCounty NVARCHAR(100),AddressCountry NVARCHAR(100),AddressPostCode NVARCHAR(100),AddressDisplay as dbo.TextConc(ISNULL(AddressName,'')+','+ISNULL(AddressL1,'')+','+ISNULL(AddressL2,'')+','+ISNULL(AddressL3,'')+','+ISNULL(AddressCity,'')+','+ISNULL(AddressCounty,'')+','+ISNULL(AddressCountry,'')+','+ISNULL(AddressPostCode,''),',',', ') PERSISTED)INSERT INTO TestAddressSELECT 'Mountain View','1600 Amphitheatre Parkway',NULL,NULL,'Mountain View','California','United States','94043'INSERT INTO TestAddressSELECT 'London','1-13 St Giles High St',NULL,NULL,'London','London','United Kingdom','WC2H 8LG'SELECT * FROM TestAddressDROP TABLE TestAddress

Author

Was this helpful?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink سياسة ملفات الارتباطخريطة الموقع

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom
The settings on this site are set to allow all cookies. These can be changed on our Cookie Policy & Settings page.
By continuing to use this site you agree to the use of cookies.
Ousia Logo
Logout
Ousia CMS Loader