Published on

February 17, 2024

Cómo intercambiar datos entre columnas en SQL Server

¿Eres nuevo en el desarrollo de SQL y has insertado accidentalmente datos en las columnas equivocadas? No te preocupes, todos hemos estado ahí. En este artículo, exploraremos una solución simple para intercambiar datos entre columnas en SQL Server.

Comencemos creando una tabla simple con tres columnas:

CREATE TABLE SwapData (
    id int,
    value1 varchar(50),
    value2 varchar(50)
);

Ahora, insertemos algunos valores en la tabla:

INSERT INTO SwapData
VALUES
    (1, '10', '100'),
    (2, '20', '200'),
    (3, '30', '300'),
    (4, '40', '400'),
    (5, '50', '500'),
    (6, '60', '600'),
    (7, '70', '700'),
    (8, '80', '800'),
    (9, '90', '900'),
    (10, '11', '110');

Ahora, supongamos que nos damos cuenta de que los valores más grandes deberían haber estado en la columna “value1”. ¿Cómo podemos intercambiar los valores entre “value1” y “value2” sin eliminar los datos o crear una nueva columna?

Una solución es usar una variable temporal:

DECLARE @temp AS varchar(50);
UPDATE SwapData
SET @temp = value2,
    value2 = value1,
    value1 = @temp;

Este código crea una variable temporal, intercambia los valores entre “value1” y “value2” y actualiza la tabla en consecuencia.

Alternativamente, podemos lograr el mismo resultado sin usar una variable temporal:

UPDATE SwapData
SET value2 = value1,
    value1 = value2;

Este código intercambia directamente los valores entre “value1” y “value2” en una sola instrucción de actualización.

Si tienes más de dos columnas y deseas intercambiar los valores entre ellas, puedes seguir un enfoque similar:

ALTER TABLE SwapData
ADD value3 varchar(50);

UPDATE SwapData
SET value1 = value3,
    value2 = value1,
    value3 = value2;

Recuerda, el orden en el que intercambias las columnas no importa siempre y cuando pases los valores correctamente.

La próxima vez que te encuentres necesitando intercambiar datos entre columnas en una tabla, recuerda estas soluciones simples. Te ahorrarán la molestia de crear columnas o variables temporales.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.