2011-01-21 10 views
9

Ho una funzione con valori di tabella denominata fn_SplitCommaSep, che separa una virgola un campo di testo (da 'a, b, c' a 3 righe: abc)SQL Join funzione con valori di tabella con tabella in cui il campo tabella è un input di funzione

Come posso unirlo a una tabella, prendendo una colonna di tabella come input?

Ai fini della presente, dire tabella MyTable ha 2 colonne, Id e TextWithCommas, e che con valori di tabella funzione fn_SplitCommaSep produce una colonna chiamata TextWithoutComma

es. qualcosa di simile a uno di questi

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

o

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

Possibile duplicato di [INNER JOIN con funzione con valori di tabella non funzionante] (http://stackoverflow.com/questions/23402316/inner-join-with- table-valued-function-not-working) –

risposta

24

Memorizzazione valori separati da virgole in un DB a parte, dare un'occhiata a APPLY

Quindi, qualcosa di simile:

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

Perfetto, grazie! Apprezzo che tu abbia dedicato del tempo. Punto preso con valori di virgola-sep ... Boyce-Codd non sarebbe felice, caso della soluzione meno peggio :-) – mos

+0

stavo cercando per tutto il giorno ... ma funziona molto bene. Grazie. – MrHIDEn

+0

Grazie mille questo è davvero utile –

Problemi correlati