2010-03-18 14 views
5

स्ट्रिंग के परिणामस्वरूप होना चाहिए मेरे डेटाबेस का स्नैप यहां है।गणना कॉलम

दोनों col1 और col2 को int के रूप में घोषित किया जाता है।

मेरे ComputedColumn वर्तमान में, कॉलम 1 और 2 कहते हैं इस प्रकार है ...

col1 col2 ComputedColumn 
1  2  3 
4  1  5 
इसके बजाय इस बात का

, मेरे ComputedColumn शामिल हो जाना चाहिए कॉलम 1 और 2 (includimg - में चरित्र '' मध्य) निम्नानुसार है ...

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

तो, सही वाक्यविन्यास क्या है?

उत्तर

9

आप शायद अपने गणना वाले कॉलम को col1+col2 के रूप में परिभाषित कर रहे हैं। इसके बजाय CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX)) आज़माएं।

या यदि आप चाहें, तो आप NVARCHAR(MAX)NVARCHAR(10) या अपनी पसंद की एक अलग लंबाई के साथ प्रतिस्थापित कर सकते हैं।

+1

मुझे लगता है कि NVARCHAR (MAX) अधिक है !, वे आईएनटी हैं, इसलिए अधिकतम लंबाई है और इसमें कोई अजीब यूनिकोड वर्ण नहीं हो सकते !!! तो वर्कर (11) ठीक होगा। –

+0

@ केएम अच्छा बिंदु, खासकर 'वचर' बनाम 'एनवीएआरएआरएआर' पर। लंबाई एक कम चिंता है - जब तक पंक्ति की कुल लंबाई स्वीकार्य पंक्ति आकार (4 के?) से अधिक न हो, मुझे विश्वास है कि आपके द्वारा सुझाए गए 11 बनाम MAX का उपयोग करने के बीच कोई व्यावहारिक अंतर नहीं होगा। – Dathan

+0

यदि यह एक गणना कॉलम है जो कि सूचीबद्ध नहीं है, तो आप इस कॉलम पर कितने चयन करते हैं, इस पर निर्भर करते हुए आप संभावित रूप से इस गणना को लाखों बार करेंगे। मुझे लगता है कि (MAX) बनाम (एन) कॉलम पर स्ट्रिंग ऑपरेशन करते समय कुछ ओवरहेड होता है। मौका क्यों लें, int varchar (11) से बड़ा नहीं हो सकता है। –

0

सरल:

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

याद रखिए अगर या तो मूल्य null है तो ComputedColumn का परिणाम भी हो जाएगा कि null

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

(डिफ़ॉल्ट मिलान और सेटिंग्स का उपयोग कर) " + "दोनों जोड़ और concatenation चरित्र है। आप स्पष्ट रूप से रूपांतरित कर सकते हैं, लेकिन इस मामले में, बीच में '-' सहित एक अंतर्निहित रूपांतरण होना चाहिए।

+2

मुझे लगता है कि यह नहीं करता है। यह अभी भी कॉलम – OrElse

+0

आह जोड़ता है, यह मजाकिया है, लेकिन मुझे लगता है कि मुझे पता है क्यों। चयन 4 + 'ए' +6 एक सिंटैक्स त्रुटि देता है "वर्टैक्स त्रुटि 'ए' को डेटा प्रकार int के कॉलम में कनवर्ट करने में त्रुटि", इसलिए यह गलत तरीके से गलत तरीके से कर रहा है (इसकी कनवर्टिंग '-' को पूर्णांक (0), फिर उन्हें एक साथ जोड़ना) – BradC

0

पहली डिजाइन मोड में तालिका बनाने के

col1 और col2 के रूप में 2 स्तंभ जोड़ने

अन्य स्तंभ computedcolumn और सेट अभिकलन स्तंभ संपत्ति जोड़ने

enter image description here

इसके अलावा, आप उपयोग कर सकते हैं कि निम्न स्क्रिप्ट

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

)

संबंधित मुद्दे