Listado completo de tutoriales

22 - Columnas calculadas (operadores aritméticos y de concatenación)


Aprendimos que los operadores son símbolos que permiten realizar distintos tipos de operaciones.
Dijimos que SQL Server tiene 4 tipos de operadores: 1) relacionales o de comparación (los vimos), 2) lógicos (lo veremos más adelante, 3) aritméticos y 4) de concatenación.

Los operadores aritméticos permiten realizar cálculos con valores numéricos.
Son: multiplicación (*), división (/) y módulo (%) (el resto de dividir números enteros), suma (+) y resta (-).

Es posible obtener salidas en las cuales una columna sea el resultado de un cálculo y no un campo de una tabla.

Si queremos ver los títulos, precio y cantidad de cada libro escribimos la siguiente sentencia:

 select titulo,precio,cantidad
  from libros;

Si queremos saber el monto total en dinero de un título podemos multiplicar el precio por la cantidad por cada título, pero también podemos hacer que SQL Server realice el cálculo y lo incluya en una columna extra en la salida:

 
 select titulo, precio,cantidad,
  precio*cantidad
  from libros;

Si queremos saber el precio de cada libro con un 10% de descuento podemos incluir en la sentencia los siguientes cálculos:

 select titulo,precio,
  precio-(precio*0.1)
  from libros;

También podemos actualizar los datos empleando operadores aritméticos:

 update libros set precio=precio-(precio*0.1);

Todas las operaciones matemáticas retornan "null" en caso de error. Ejemplo:

 select 5/0;

Los operadores de concatenación: permite concatenar cadenas, el más (+).

Para concatenar el título, el autor y la editorial de cada libro usamos el operador de concatenación ("+"):

 select titulo+'-'+autor+'-'+editorial
  from libros;

Note que concatenamos además unos guiones para separar los campos.

Servidor de SQL Server instalado en forma local.

Ingresemos el siguiente lote de comandos en el SQL Server Management Studio:

if object_id ('libros') is not null
  drop table libros;

create table libros(
  codigo int identity,
  titulo varchar(40) not null,
  autor varchar(20) default 'Desconocido',
  editorial varchar(20),
  precio decimal(6,2),
  cantidad tinyint default 0,
  primary key (codigo)
);

go

insert into libros (titulo,autor,editorial,precio)
  values('El aleph','Borges','Emece',25);
insert into libros
  values('Java en 10 minutos','Mario Molina','Siglo XXI',50.40,100);
insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Alicia en el pais de las maravillas','Lewis Carroll','Emece',15,50);

-- Queremos saber el monto total en dinero de cada libro: 
select titulo, precio,cantidad,
  precio*cantidad
  from libros;

-- Conocer el precio de cada libro con un 10% de descuento:
select titulo,precio,
  precio-(precio*0.1)
  from libros;

-- Actualizar los precios con un 10% de descuento:
update libros set precio=precio-(precio*0.1);

select * from libros;

-- Queremos una columna con el título, el autor y la editorial de cada libro:
select titulo+'-'+autor+'-'+editorial
  from libros;

Retornar