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?

È stato utile?

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

enter image description here

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)))

)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top