خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استخراج کردن اعداد از یک رشته در SQL Server

استخراج کردن اعداد از یک رشته در SQL Server
با این فرض که ردیف یا ریدف هایی رشته ای که ترکیبی از اعداد و حروف و کاراکترها هستند را دارید و حال می خواهید که اعداد را از کاربراکترها جدا کنید و فقط اعداد را داشته باشید و این اعداد استخراج شده از سایر کارکترها را با ویرگول از هم جدا کنید. در برخی سناریوهایی که در SQL Server دارید، شاید نیاز به این کار داشته باشید. یعنی اگر یک رشته abc123def456ghi789 وجود داشته باشد ، اعداد باید به صورت 123،456،789 از هم جدا شوند. برای ان منظور از Function زیر می توانید استفاده کنید.

سیستم یکپارچۀ سازمانی راهکار



CREATE FUNCTION [dbo].[mtb_GetNumbers]
(
@stInput VARCHAR(max)
)
RETURNS VARCHAR(max)
AS
BEGIN

SET @stInput = REPLACE(@stInput,',','')

DECLARE @intAlpha INT
DECLARE @intNumber INT

SET @intAlpha = PATINDEX('%[^0-9,]%', @stInput)
SET @intNumber = PATINDEX('%[0-9,]%', @stInput)

IF @stInput IS NULL OR @intNumber = 0
RETURN '';

WHILE @intAlpha > 0
BEGIN
IF (@intAlpha > @intNumber)
BEGIN
SET @intNumber = PATINDEX('%[0-9,]%', SUBSTRING(@stInput, @intAlpha, LEN(@stInput)) )
SELECT @intNumber = CASE WHEN @intNumber = 0 THEN LEN(@stInput) ELSE @intNumber END
END

SET @stInput = STUFF(@stInput, @intAlpha, @intNumber - 1,',' );

SET @intAlpha = PATINDEX('%[^0-9,]%', @stInput )
SET @intNumber = PATINDEX('%[0-9,]%', SUBSTRING(@stInput, @intAlpha, LEN(@stInput)) )
SELECT @intNumber = CASE WHEN @intNumber = 0 THEN LEN(@stInput) ELSE @intNumber END
END


IF (RIGHT(@stInput, 1) = ',')
SET @stInput = LEFT(@stInput, LEN(@stInput) - 1)

IF (LEFT(@stInput, 1) = ',')
SET @stInput = RIGHT(@stInput, LEN(@stInput) - 1)

RETURN ISNULL(@stInput,0)
END
GO

حالا که Function ایجاد شد، با استفاده از اسکریپت های زیر، این مورد را تست می کنیم و خواهید که چگونه اعداد موجود در یک رشته از حروف و کاراکترها، استخراج شده و نمایش داده می شود:

/* Testing the function with alpha numeric strings */
SELECT '1a2b3c', dbo.mtb_GetNumbers('1a2b3c');
SELECT '123abc', dbo.mtb_GetNumbers('123abc');
SELECT 'abc123', dbo.mtb_GetNumbers('abc123');
SELECT 'a123b', dbo.mtb_GetNumbers('a123b');
SELECT '1abc2', dbo.mtb_GetNumbers('1abc2');
SELECT '123abc123abc', dbo.mtb_GetNumbers('123abc123abc');
SELECT '', dbo.mtb_GetNumbers('');
SELECT 'NonNumeric', dbo.mtb_GetNumbers('NonNumeric');
SELECT 'NULL', dbo.mtb_GetNumbers(NULL);
SELECT 'Azure4234SQL232Data333Warehouse23and0Parallel,Data43434Warehouse', dbo.mtb_GetNumbers('Azure4234SQL232Data333Warehouse23and0Parallel,Data43434Warehouse');
GO

استخراج کردن اعداد از یک رشته در SQL Server . آموزشگاه رایگان خوش آموز


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز