Question

Voici un jeu d'enfant de ma base de données.

Les deux col1 et col2 sont déclarés comme int.

Mon ComputedColumn ajoute actuellement les colonnes 1 et 2, comme suit ...

col1  col2  ComputedColumn
1     2     3
4     1     5

Au lieu de cela, mon ComputedColumn devrait rejoindre les colonnes 1 et 2 (includimg le - caractère au milieu) comme suit ...

col1  col2  ComputedColumn
1     2     1-2
4     1     4-1

Alors, quelle est la syntaxe correcte?

Était-ce utile?

La solution

vous définissez probablement votre colonne calculée comme col1+col2. Essayez CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX)) à la place.

Ou si vous préférez, vous pouvez remplacer NVARCHAR(MAX) avec NVARCHAR(10) ou une autre longueur de votre choix.

Autres conseils

create table TableName
(
    col1 int,
    col2 int,
    ComputedColumn as Convert(varchar, col1) + '-' + Convert(varchar, col2)
)

Gardez à l'esprit que si l'une des valeurs est null alors le résultat de ComputedColumn sera également null (en utilisant le classement par défaut et les paramètres)

simple:

SELECT ComputedColumn = convert(varchar, col1) + '-' + convert(varchar, col2)
  FROM Table
SELECT col1, col2, (col1 + '-' + col2) as ComputedColumn

« + » est à la fois plus et le caractère de concaténation. Vous pouvez convertir explicitement, mais dans ce cas, y compris le « - ». Au milieu devrait provoquer une conversion implicite

d'abord créer la table en mode design

ajouter 2 colonne comme col1 et col2

ajouter une autre computedcolumn colonne et définissez la propriété de colonne calculée

entrer image description ici

Vous pouvez également utiliser ce script suivant

CREATE TABLE [dbo].[tbl](
[col1] [varchar](50) NOT NULL,
[col2] [varchar](50) NOT NULL,
[ComputedColumn]  AS ((CONVERT([varchar],[col1],(0))+'-')+CONVERT([varchar],[col2],(0)))

)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top