by Eren
9. June 2009 20:29
Soru : Muallim efendi aklıma birşey takıldı. Geçenlerde huysuz patronum benden SQL den gelen bir satırın bir hücresinde yeralan ve bir sembol ile ayrılmış verileri
split etmemi istedi. Yani hani csharp ve benzeri programlama dillerindeki Split fonksiyonu varya onun TSQL versiyonuna ihtiyacımvar. Ben varchar değerimi vereyim
ayraç karakterimi vereyim bana table olarak satır satır ayırdığı değerleri döndürsün mesela
'ahmet;mehmet;ayşe;fatma' verisini
-------
ahmet
mehmet
ayşe
fatma
şeklinde bir table halinde istiyorum.
El-Cevab :
Çok güzel bir konuya parmak bastın çekirge. Sana öyle bir fonksiyon yazayım ki dertlerine derman, yaralarına merhem olsun;
|
CREATE FUNCTION dbo.fnSplit
(
@sInputList VARCHAR(8000),
@sDelimiter VARCHAR(8000) = ','
)
RETURNS @List
TABLE (item VARCHAR(8000))
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))), @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList)))) IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList
RETURN
END
|