2011-01-21 16 views
9

Bir metin alanını virgülle ayıran (a, b, c '- 3 satır: abc) fn_SplitCommaSep adında tablo değerli bir işlev varSQL Tablo alanı bir işlev girdisi olan tabloyla tablo değerli işlevine katılın

Bunu tabloya giriş olarak tablo sütununa nasıl ekleyebilirim? Bu amaçla

, tablo MyTable 2 sütun, Id ve TextWithCommas vardır ki, ve bu tablo değerli işlev fn_SplitCommaSep

örneğin TextWithoutComma

adlı bir sütun üretir. kenara DB bu

select fs.TextWithoutComma 
    from fn_SplitCommaSep(select mt.TextWithCommas from MyTable) fs 

veya

select fs.TextWithoutComma, mt.Id 
    from MyTable mt 
    inner join fn_SplitCommaSep(mt.TextWithCommas) fs on (something) 
+0

Olası [Tablo Değerli Fonksiyonu olan INNER JOIN çalışmıyor] (http://stackoverflow.com/questions/23402316/inner-join-with- Tablo değerli işlev çalışmıyor) –

cevap

24

saklanması virgülle ayrılmış değerlerden biri gibi bir şey, APPLY

bakmak Yani böyle bir şey:

SELECT fs.TextWithoutComma, mt.Id 
FROM MyTable mt 
    CROSS APPLY fn_SplitCommaSep(mt.TextWithCommas) AS fs 
+0

Mükemmel, teşekkürler! Zaman ayırdığınız için minnettarım. Comma-sep değerleri ile alınan nokta ... Boyce-Codd mutlu olmaz, en az kötü olan çözümün örneği olmaz :-) – mos

+0

Bütün gün arıyordum ... ama çok iyi çalışıyor. Teşekkür ederim. – MrHIDEn

+0

Teşekkür ederim bu gerçekten yararlı –

İlgili konular