2011-03-30 23 views
17

Estoy tratando de convertir la columna de consulta de ColdFusion a una lista, ¿cuál es la mejor manera de hacerlo?Cómo convertir columna de consulta a una lista en ColdFusion

Pensé que hay una función incorporada que permite convertir fácilmente la columna de una consulta en una lista, si existe ¿cuál es?

+2

Erik, su pregunta es un poco viejo para que prolly ya lo imaginó, pero para la posteridad: 'ArrayToList (QueryName [" ColumnName "],", ")' –

Respuesta

40

No es una función integrada para hacer eso: ValueList

<cfset myList = ValueList(query.columnname)> 

Al igual que con todas las funciones de la lista, hay un atributo delimitador opcional.

<cfset myList = ValueList(query.columnname,"|")> 

Si necesita los valores de la lista para tener comillas dobles alrededor de ellos, utilice QuotedValueList.

<cfset myList = QuotedValueList(query.columnname)> 
3

También puede acceder a las columnas de una consulta como matrices directamente sin ningún tipo de conversión si funciona para lo que estamos tratando de hacer:

qry.col[1] // col field of first record 
qry.col[2] // col field of second record 
... 

o

qry["col"][1] // col field of first record 
qry["col"][2] // col field of second record 

un objeto de consulta CF es realmente una matriz asociativa de columnas ... raro pero ocasionalmente útil.

+3

Aunque está cerrado, no sé por qué, me siento obligado a colocar esta respuesta, ArrayToList (QueryName ["ColumnName"], ","). –

+0

¿Por qué demonios estás ofreciendo estas soluciones intrincadas? ¿Qué pasa con ValueList()? – ale

+0

El tratamiento de la columna como una matriz no requiere conversión y es más rápido para grandes conjuntos de registros. ValueList() toma una cantidad de tiempo distinta de cero para convertir, y lo que obtiene de ella es una cadena. Trabajar con una lista de cadenas ahora lleva incluso más tiempo. ¿Por qué convertir algo de una matriz a una lista y luego regresar a algún tipo de constructo iterable solo para usarlo de nuevo? – bpanulla

0

¿Y en un caso como este:

<cfset SummaryQuery = Evaluate('getReportData' & summaryName & 'Summary') /> 
<cfset TypeList = ArrayToList(SummaryQuery[subsectionName & 'Type']) /> 

vs

<cfset QueryColumn = SummaryQuery[subsectionName & 'Type'] /> 
<cfset TypeList = ValueList(QueryColumn) /> 
Cuestiones relacionadas