2010-03-18 25 views
5

dizesi ile sonuçlanmalıdır. Veritabanımın bir kısmı aşağıdadır.Hesaplanan sütun,

Hem col1 hem de col2, int. aşağıdaki gibi

Benim ComputedColumn şu anda ..., Kolonlar 1 ve 2 ekler Bunun yerine

col1 col2 ComputedColumn 
1  2  3 
4  1  5 

, sütunlar 1 ve 2 ( includimg katılmalıyım benim ComputedColumn - in karakter '' ortadaki gibi) aşağıdaki gibi ...

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

Doğru sözdizimi nedir?

cevap

9

Muhtemelen hesaplanmış sütununuzu col1+col2 olarak tanımlayabilirsiniz. Bunun yerine CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX))'u deneyin.

Ya da tercih ederseniz, 'u NVARCHAR(10) veya istediğiniz farklı uzunlukta değiştirebilirsiniz.

+1

Bence NVARCHAR (MAX) overkill !, onlar INTs, bu yüzden bir maksimum uzunluk var ve herhangi bir garip unicode karakterleri içeremez! yani varchar (11) iyi olurdu. –

+0

@KM İyi bir nokta, özellikle de "VARCHAR" ve "NVARCHAR". Uzunluk, daha az bir sorundur - satırın toplam uzunluğu izin verilen satır boyutunu (4K?) Aşmadığı sürece, MAX'ı önerdiğiniz 11'e karşı pratik bir fark olmayacağına inanıyorum. – Dathan

+0

Eğer bu PERSISTED olmayan hesaplanmış bir sütunsa, bu sütunda kaç SELECT yaptığınıza bağlı olarak milyonlarca kez hesaplama yapabilirsiniz. (MAX) vs (n) sütunlarında string işlemleri yaparken biraz yük olduğunu düşünürdüm. Neden şansı kullanırız, int varchar'dan daha büyük olamaz (11). –

0

basit:

SELECT ComputedColumn = convert(varchar, col1) + '-' + convert(varchar, col2) 
    FROM Table 
2
create table TableName 
(
    col1 int, 
    col2 int, 
    ComputedColumn as Convert(varchar, col1) + '-' + Convert(varchar, col2) 
) 

ya değer null ise Ayı akılda sonra ComputedColumn sonucu da olacağını null

0
SELECT col1, col2, (col1 + '-' + col2) as ComputedColumn 

(varsayılan harmanlama ve ayarlar kullanılarak) " + "hem ekleme hem de birleştirme karakteridir. Açıkça dönüştürebilirsiniz, ancak bu durumda, ortadaki '-' dahil olmak örtülü bir dönüşüme neden olmalıdır.

+2

Sanırım değil. Hala – OrElse

+0

Ah sütunları ekler, bu komik, ama sanırım nedenini biliyorum. SELECT 4 + 'a' + 6 bir sözdizimi hatası döndürüyor "Varyasyon değeri" A "değişkenini bir veri türü int sütununa dönüştüren sözdizimi hatası, bu nedenle örtük dönüştürmeyi yanlış yolla yapmalıdır (dönüştüren '-' Tam sayı (0), sonra hepsini bir araya ekleme) – BradC

0

ilk

col1 ve col2 olarak 2 sütun eklemek tasarım modunda tablo oluşturmak

başka bir sütun computedcolumn ve seti hesaplanan sütun özelliği eklemek Ayrıca

enter image description here

aşağıdaki komut kullanabiliriz

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

)

İlgili konular