Sql tarafında ETL, bulk insert, data compare gibi işlemler yaparken string ifadelerin başlarında ve sonlarında yer alan boşluk gibi ifadeler çok can sıkıcı olabiyor çoğu zaman.
Özellikle data, source olarak bir file kullanılarak elde edilmişse; kayıtlarda boşluk dışında enter gibi farklı ifadelerin de yer alma ihtimali yüksektir. Bu tarz verileri akıllıca trimleyebilmek adına son zamanlarda uğraştığım Data Mining Projesinin ETL modülünde kullanmak üzere yazdığım sql function'u sizlerle de paylaşmak istedim.
CREATE FUNCTION [dbo].[Trim]
(
@pString NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
BEGIN
DECLARE @pReturnString NVARCHAR(MAX)
SET @pString = REPLACE(REPLACE(@pString,CHAR(13),CHAR(32)),CHAR(10),CHAR(32))
WHILE (ISNULL(CHARINDEX(CHAR(32)+CHAR(32),@pString),0)>0)
BEGIN
SET @pString = REPLACE(@pString,CHAR(32)+CHAR(32),CHAR(32))
END
IF (@pString IS NULL OR LTRIM(RTRIM(@pString))='')
SET @pReturnString = NULL
ELSE
SET @pReturnString = LTRIM(RTRIM(@pString))
RETURN @pReturnString
END
Örnek Kullanım Şekli ve Outputs
SELECT dbo.Trim(' Erbil Taner Tugaylı ') -->Output: Erbil Taner Tugaylı
SELECT dbo.Trim(' Erbil Taner Tugaylı ') -->Output: Erbil Taner Tugaylı
SELECT dbo.Trim(' Erbil
Taner
Tugaylı ') -->Output: Erbil Taner Tugaylı