2010-06-30 15 views
23

Tengo dos columnas en una tabla SQL, fooId (int) y fooName (varchar).Combinar columna varchar con int columna

¿Hay alguna manera de seleccionarlos como una sola columna con un espacio entre ellos?

select fooId + ' ' + fooName as fooEntity 
from mytable 

Son tipos diferentes, así que me sale un error.

Este campo se enlazará directamente en un control en la aplicación web.

SQL Server 2008

(soy un poco de un principiante sql)

+0

posible duplicado de [Cómo concatenar números y cadenas para formatear números en T-SQL?] (Http://stackoverflow.com/questions/951320/how-to-concatenate-numbers-and-strings-to-format -numbers-in-t-sql) – LittleBobbyTables

Respuesta

31

concatenación de cadenas es diferente entre las bases de datos, por lo que es muy útil saber qué base de datos, porque lo que necesita saber:

  1. El método de concatenación/operador
  2. Si la base de datos se encarga de la conversión implícita de tipo de datos

SQL Server no realiza la conversión implícita de valores numéricos en cadenas:

SELECT CAST(fooid AS VARCHAR(10)) + ' ' + fooname 

... por lo que necesita utilizar CAST (or CONVERT) para cambiar explícitamente el tipo de datos a un tipo de datos basado en texto.

Para & Oracle PostgreSQL, utilice la barra doble para concatenar cadenas:

SELECT fooid || ' ' || fooname 

Para MySQL, se puede utilizar el CONCAT function:

SELECT CONCAT(fooid, ' ', fooname) 
+0

SQL Server 2008. He editado la publicación original. – Gabe

+0

Ah, esta es mucho más completa que mi respuesta. +1 –

+0

Muy claro y detallado. Responde cada caso +1 – Nik

2

Prueba esto:

SELECT Convert(foold, SQL_CHAR) + ' ' + fooName FROM mytable 

o

SELECT Cast(foold AS SQL_CHAR(10)) + ' ' + fooName FROM mytable 
0

Sí debería ser correcto, siempre que el campo encuadernado sea una cadena.

¿Cuál es el error que está obteniendo?

0

no estoy seguro de si es un SQL estándar, pero PostgreSQL usa el operador || para la concatenación de cadenas. + significa suma numérica.

Cuestiones relacionadas