Web design and hosting, database, cloud and social media solutions that deliver business results
  • خدمات مشاوره پایگاه داده
    • ابزارها
      • پشتیبان کد SQL
      • چاپگر SQL
    • مقالات فنی
      • استفاده از SQL Server Dates
      • استفاده از توابع سرور SQL
      • با استفاده از SQL Server Pivot-Unpivot
      • تعمیر و نگهداری سرور SQL
      • داده SQL سرور
  • راه حل های کسب و کار
  • طراحی وب سایت
    • جزیره وایت
    • مقالات فنی
  • خدمات شغلی
  • رسانه های اجتماعی
  • آکادمی
  • دربارهی ما
    • تیم
      • چستر Copperpot
      • سونیل کومار
    • نمونه کارها
عربى (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 Server برای اتصال رشته ها

یک عملکرد SQL Server انعطاف پذیر و قابل استفاده مجدد برای برگرداندن یک رشته متن قالب بندی شده و محدود از مجموعه ستون ها یا متغیرها

نمایش متن به خوبی قالب بندی شده

استفاده از توابع سرور SQL

این تابع از نیاز به نمایش آدرس در یک رشته کاملاً قالب بندی شده به وجود آمده است. هنگام کار با این نوع داده ها ، اغلب موارد خالی ، مقادیر NULL و بعضی اوقات متن جدا شده در قسمت های داده وجود دارد. الحاق استاندارد ستون ها منجر به جداسازی دو برابر با خالی یا ویرگول در انتها می شود.

با این حساب ما به یک روش برای جدا کردن داده ها ، به استثنای جای خالی ، برش فضای سفید و حذف داده های انتهایی احتیاج داشتیم. روشهای مختلفی برای استفاده از 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

داده های آزمون

برای اهداف آزمایش می توانیم یک جدول موقت ایجاد کنیم و چند آدرس ذخیره کنیم. دستور Select را با تابع ترکیب کنید و می توانید ببینید که چگونه یک مجموعه داده با قالب کاملاً واضح را باز می گرداند که برای اهداف نمایش مناسب است.

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