2010-06-30 12 views
23

के साथ वर्चर कॉलम को मिलाएं मेरे पास SQL ​​तालिका, fooId (int) और fooName (वर्कर) में दो कॉलम हैं।int कॉलम

क्या उनके बीच एक स्थान के साथ एक कॉलम के रूप में उन्हें चुनने का कोई तरीका है?

select fooId + ' ' + fooName as fooEntity 
from mytable 

वे अलग-अलग प्रकार हैं इसलिए मुझे एक त्रुटि मिल रही है।

यह फ़ील्ड वेब ऐप में सीधे नियंत्रण में डाटाबेस होगा।

एसक्यूएल सर्वर 2008

(मैं एक एसक्यूएल शुरुआत का एक सा हूँ)

+0

टी-एसक्यूएल में संख्याओं को प्रारूपित करने के लिए संख्याओं और स्ट्रिंग्स को कैसे समेकित करें?] (Http://stackoverflow.com/questions/951320/how-to-concatenate-numbers-and-strings-to-format -numbers-in-t-sql) – LittleBobbyTables

उत्तर

31

स्ट्रिंग संयोजन डाटाबेस के बीच अलग है, तो यह जो डेटाबेस को पता है क्योंकि आप जानते हैं की जरूरत है मदद करता है:

  1. संयोजन विधि/ऑपरेटर
  2. डेटाबेस अंतर्निहित डेटा प्रकार रूपांतरण का प्रबंधन करता है

SQL सर्वर स्ट्रिंग मानों में संख्यात्मक के अंतर्निहित रूपांतरण नहीं करता है:

SELECT CAST(fooid AS VARCHAR(10)) + ' ' + fooname 

... इसलिए आपको डेटा प्रकार को टेक्स्ट आधारित डेटा प्रकार में स्पष्ट रूप से बदलने के लिए CAST (or CONVERT) का उपयोग करने की आवश्यकता है।

लिए ओरेकल & PostgreSQL, तार जोड़ लिए डबल पाइप का उपयोग करें:

SELECT fooid || ' ' || fooname 

के लिए MySQL, तो आप उपयोग कर सकते हैं CONCAT function:

SELECT CONCAT(fooid, ' ', fooname) 
+0

SQL Server 2008. मैंने मूल पोस्ट संपादित कर लिया है। – Gabe

+0

आह, यह मेरे उत्तर से कहीं अधिक पूर्ण है। +1 –

+0

बहुत स्पष्ट और विस्तृत। उत्तर हर मामले +1 – Nik

2

इस प्रयास करें:

SELECT Convert(foold, SQL_CHAR) + ' ' + fooName FROM mytable 

या

SELECT Cast(foold AS SQL_CHAR(10)) + ' ' + fooName FROM mytable 
0

हाँ वह ठीक होना चाहिए, जब तक बाध्य क्षेत्र एक स्ट्रिंग है।

आपको क्या त्रुटि मिल रही है?

0

मैं अगर यकीन नहीं है यह मानक एसक्यूएल है, लेकिन PostgreSQL स्ट्रिंग concatenation के लिए || ऑपरेटर का उपयोग करता है। + का अर्थ संख्यात्मक जोड़ है।

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