تابع STUFF در SQL
تابع STUFF:
این تابع، یک رشته را داخل رشته دیگر درج می کند و در رشته اول از موقعیت start به طول مشخص شده ای (length) کاراکترها را حذف می کند.
رشته دوم در موقعیت start درج می شود.
نحوه استفاده:
پارامترها:
پارامتر | توضیح |
---|---|
character_expression |
یک عبارت رشته ای است و می تواند یک متغیر، ثابت و یا ستونی از داده های رشته ای یا باینری باشد. |
start |
یک مقدار عددی است که محل شروع حذف شدن و درج شدن رشته دوم را مشخص می کند. اگر start منفی باشد و یا بزرگتر از طول رشته اول باشد، NULL برگشت می شود. start می تواند از نوع bigint باشد. |
length |
یک مقدار عددی است که تعداد کاراکترهایی که باید از رشته اول حذف شود را مشخص می کند. اگر length منفی باشد مقدار NULL برگشت می شود و اگر بزرگتر از طول رشته اول باشد عمل حذف شدن انجام خواهد شد. length می تواند از نوع bigint باشد. |
نوع داده خروجی(Return Type):
اگر character_expression از داده های رشته ای است، نوع داده خروجی نیز رشته ای خواهد بود و اگر character_expression از داده های باینری باشد، نوع داده خروجی نیز باینری است.
مثال1: در مثال زیر، در رشته "abcdef" از موقعیت 2 به طول 3 کاراکتر حذف می شود و بجای آن رشته "ijklmn" درج می شود:
GO
نتیجه به شکل زیر خواهد بود:
result |
---|
aijklmnef |
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 18590
دیدگاهها
سلام من کوئری زیر رو نوشتم .حالا میخوام نام و نام خانوادگی ها برای سطرهایی از جواب که Invention.Title مثل هم هست کنار هم نوشته بشه.لطفا راهنمایی کنید.SELECT row_number() OVER (ORDER BY Invention.RegDa te) n, coalesce(Invent ion.Title,Inven tion.EngTitle) AS ic, Invention.RegDa te, Invention.Inven tionregNo,Resea rcher.Name + ' ' +Researcher.Fam ily as fullname
FROM Researcher inner join
ResearcherInven tion ON ResearcherInven tion.Researcher_code = Researcher.Code join
Invention ON ResearcherInven tion.Invention_code = Invention.code
where ResearcherInven tion.Invention_code in (select Invention_code from ResearcherInven tion where Researcher_code =49000204)
سلام، خیلی ساده است، باید بر اساس Invention.Title مرتب سازی کنید. یعنی در قسمت row_number بجای Invention.RegDa te از فیلد Invention.Title استفاده نمایید.SELECT row_number() OVER (ORDER BY Invention.Title) n, ...
...
سلام منظور من این بود که برای سطرهایی که Invention.Title مثل هم هست،اسامی نویسنده ها در تنها یک سطر کنار هم نوشته شوند.نمی خواهم برای هر نویسنده یک سطر ایجاد کند.برای هر اختراع همه نویسنده ها کنار هم در یک سطر و یک ستون نوشته شوند.
به لینک زیر مراجعه کنید، خیلی خوب توضیح داده ...!
www.mssqltips.com/sqlservertip/2914/rolling-up-multiple-rows-into-a-single-row-and-column-for-sql-server-data/