“Conocimiento software>SQL Server

¿Hay alguna función en el servidor SQL para devolver todos los valores de una columna separada por coma que no desea usar el bucle o el cursor severo?

2011/6/19
Sí, SQL Server ofrece varias formas de concatenar todos los valores de una columna en una sola cadena separada por comas sin usar bucles o cursores. Los métodos más eficientes generalmente implican el uso de 'String_agg` (disponible en SQL Server 2017 y posterior) o `para la ruta XML' (también funciona en versiones anteriores).

Método 1:Uso de `String_agg` (SQL Server 2017 y posterior)

Este es el enfoque más simple y eficiente para las versiones modernas de SQL Server:

`` `SQL

Seleccione String_agg (YourColumn, ',') como Valores Concatenated

De tu tuya;

`` `` ``

Reemplace 'YourTable` y' YourColumn` con los nombres reales de su tabla y columna. Esto devolverá una sola fila con todos los valores de `YourColumn` concatenado en una sola cadena, separada por comas.

Método 2:Uso de `para la ruta XML (SQL Server 2016 y anterior)

Para versiones de servidor SQL más antiguas, `para la ruta XML 'proporciona una funcionalidad similar:

`` `SQL

Seleccione cosas ((

Seleccionar ',' + YourColumn

De tu tuya

Para la ruta XML ('')

), 1, 1, '') como valores concatenados;

`` `` ``

Este método utiliza una subconsulta para concatenar los valores con comas y luego la función 'Stuff' elimina la coma líder.

Ejemplo:

Digamos que tiene una tabla llamada 'Empleados' con una columna llamada 'Employeename`:

| Employeename |

| --- | --- |

| John Doe |

| Jane Smith |

| David Lee |

Usando `string_agg`:

`` `SQL

Seleccione String_agg (Employeename, ',') como Employeenames

De los empleados;

`` `` ``

Esto volvería:

| Employeenames |

| --- | --- |

| John Doe, Jane Smith, David Lee |

Usando `para ruta XML`:

`` `SQL

Seleccione cosas ((

Seleccionar ',' + Employeename

De empleados

Para la ruta XML ('')

), 1, 1, '') como Employeenames;

`` `` ``

Esto también volvería:

| Employeenames |

| --- | --- |

| John Doe, Jane Smith, David Lee |

Consideraciones importantes:

* Valores nulos: Ambos métodos manejan los valores de 'NULL` ignorándolos efectivamente. Si necesita representar los valores `NULL` en su cadena concatenada (por ejemplo, utilizando un marcador especial como" NULL "), deberá agregar una instrucción 'Case` dentro de la agregación. Por ejemplo, con `string_agg`:

`` `SQL

Seleccione String_agg (Caso cuando el Employeename es nulo, entonces 'NULL' Else Employeename End ',') como Employeenames

De los empleados;

`` `` ``

* Tipo de datos: Asegúrese de que el tipo de datos de su columna sea compatible con la concatenación de cadenas. Si es necesario, use `Cast` o` Convertir` para convertir la columna en un tipo de datos adecuado (por ejemplo, `varchar`).

* Rendimiento: Para tablas muy grandes, `String_agg` es generalmente más performador que` para la ruta XML '.

Elija el método que sea apropiado para su versión de SQL Server. `String_agg` es la opción preferida y más legible si su versión de SQL Server lo admite.

SQL Server
¿Cómo se cambia la contraseña de un inicio de sesión de SQL Server?
SQL Server 2005 Enterprise vs Standard Edition
Cómo iniciar sesión en el MS SQL Server
Cómo configurar el Server Express GUI Herramienta de administración de SQL
Cómo encontrar a un índice no utilizada en SQL Server
Cómo restaurar la base de datos de SQL Server 2008 a SQL Server 2005
La tabla o tablas de las cuales una consulta obtiene sus datos es el?
Procedimientos almacenados de un servidor SQL Server Express
Conocimiento de la computadora © http://www.ordenador.online