2011-01-21 19 views
9

Tengo una función de valor de tabla llamada fn_SplitCommaSep, que separa en coma un campo de texto (de 'a, b, c' a 3 filas: abc)SQL Unirme a la función de tabla con tabla donde campo de tabla es una entrada de función

¿Cómo puedo unir esto a una tabla, tomando una columna de tabla como entrada?

Para el propósito de esta, por ejemplo la tabla MyTable tiene 2 columnas, Id y TextWithCommas, y que la función fn_SplitCommaSep con valores de tabla produce una columna llamada TextWithoutComma

por ejemplo. algo así como una de estas

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

Posible duplicado de [INNER JOIN con la función de valor de tabla no funciona] (http://stackoverflow.com/questions/23402316/inner-join-with- table-valued-function-not-working) –

Respuesta

24

Almacenamiento de valores separados por comas en una base de datos a un lado, echar un vistazo a APPLY

Así que algo como:

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

Perfecto, gracias! Aprecio que te tomes el tiempo. Punto tomado con valores coma-sep ... Boyce-Codd no estaría contento, caso de la peor solución :-) – mos

+0

Estaba buscando todo ese día ... pero funciona muy bien. Gracias. – MrHIDEn

+0

Gracias esto es realmente útil –

Cuestiones relacionadas