La colonna calcolata dovrebbe risultare in una stringa
-
20-09-2019 - |
Domanda
Ecco uno scatto del mio database.
Sia col1 che col2 sono dichiarati come int.
My ComputedColumn attualmente aggiunge le colonne 1 e 2, come segue...
col1 col2 ComputedColumn
1 2 3
4 1 5
Invece di questo, il mio ComputedColumn dovrebbe unire le colonne 1 e 2 (incluso il file '-' carattere al centro) come segue...
col1 col2 ComputedColumn
1 2 1-2
4 1 4-1
Quindi, qual è la sintassi corretta?
Soluzione
Probabilmente stai definendo la tua colonna calcolata come col1+col2
. Provare CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX))
invece.
Oppure, se preferite, è possibile sostituire con NVARCHAR(MAX)
NVARCHAR(10)
o una diversa lunghezza di vostra scelta.
Altri suggerimenti
create table TableName
(
col1 int,
col2 int,
ComputedColumn as Convert(varchar, col1) + '-' + Convert(varchar, col2)
)
Si tenga presente che se uno dei due valori è null
allora il risultato di ComputedColumn
sarà anche null
(utilizzando il confronto predefinito e le impostazioni)
semplice:
SELECT ComputedColumn = convert(varchar, col1) + '-' + convert(varchar, col2)
FROM Table
SELECT col1, col2, (col1 + '-' + col2) as ComputedColumn
"+" è sia il carattere di addizione che quello di concatenazione.Potresti eseguire una conversione esplicita, ma in questo caso, includere il segno "-" al centro dovrebbe causare una conversione implicita.
creare prima la tabella in modalità progettazione
aggiungi 2 colonne come col1 e col2
aggiungi un'altra colonna calcolata e imposta la proprietà della colonna calcolata
Inoltre puoi usare il seguente script
CREATE TABLE [dbo].[tbl](
[col1] [varchar](50) NOT NULL,
[col2] [varchar](50) NOT NULL,
[ComputedColumn] AS ((CONVERT([varchar],[col1],(0))+'-')+CONVERT([varchar],[col2],(0)))
)