La columna calculada debe resultar en una cadena
-
20-09-2019 - |
Pregunta
Aquí hay una instantánea de mi base de datos.
Tanto col1 como col2 se declaran como int.
Mi ComputedColumn actualmente agrega las columnas 1 y 2, de la siguiente manera...
col1 col2 ComputedColumn
1 2 3
4 1 5
En lugar de esto, mi ComputedColumn debería unir las columnas 1 y 2 (incluida la '-' personaje en el medio) de la siguiente manera...
col1 col2 ComputedColumn
1 2 1-2
4 1 4-1
Entonces, ¿cuál es la sintaxis correcta?
Solución
Probablemente se esté definiendo su columna calculada como col1+col2
. Trate de CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX))
lugar.
O si lo prefiere, puede sustituir con NVARCHAR(MAX)
NVARCHAR(10)
o una longitud diferente de su elección.
Otros consejos
create table TableName
(
col1 int,
col2 int,
ComputedColumn as Convert(varchar, col1) + '-' + Convert(varchar, col2)
)
Tenga en cuenta que si cualquiera de los valores es null
entonces el resultado de ComputedColumn
también será null
(usando la colación por defecto y la configuración)
simple:
SELECT ComputedColumn = convert(varchar, col1) + '-' + convert(varchar, col2)
FROM Table
SELECT col1, col2, (col1 + '-' + col2) as ComputedColumn
"+" es tanto el carácter de suma como el de concatenación.Podrías convertir explícitamente, pero en este caso, incluir el '-' en el medio debería provocar una conversión implícita.
primero crear la tabla en modo de diseño
añadir 2 columna como col1 y col2
añadir otra computedcolumn columna y establecer la propiedad de columna calculada
También puede utilizar esa secuencia de comandos siguiente
CREATE TABLE [dbo].[tbl](
[col1] [varchar](50) NOT NULL,
[col2] [varchar](50) NOT NULL,
[ComputedColumn] AS ((CONVERT([varchar],[col1],(0))+'-')+CONVERT([varchar],[col2],(0)))
)