SQL में एक ही लाइन पर पूर्णांक चर और स्ट्रिंग को प्रिंट करना


81

ठीक है, तो मैंने कोई फायदा नहीं होने के लिए टेक्नेट पर इसका जवाब खोजा है।

मैं सिर्फ एक स्ट्रिंग वैरिएबल को प्रिंट करना चाहता हूं जिसे दो स्ट्रिंग चर के साथ समतल किया गया है।

यह मेरा कोड है, जो नहीं चलता है:

print 'There are ' + @Number + ' alias combinations did not match a record'

ऐसा लगता है कि इस तरह की बुनियादी सुविधा है, मैं सोच भी नहीं सकता था कि यह टी-एसक्यूएल में संभव नहीं है। लेकिन अगर यह संभव नहीं है, तो कृपया ऐसा कहें। मैं सीधा उत्तर नहीं खोज सकता।


2
print 'There are ' + CAST(@Number AS NVARCHAR(100)) + ' alias combinations did not match a record'
पोटाशिन

जवाबों:


133
declare @x INT = 1 /* Declares an integer variable named "x" with the value of 1 */
    
PRINT 'There are ' + CAST(@x AS VARCHAR) + ' alias combinations did not match a record' /* Prints a string concatenated with x casted as a varchar */

मुझे कास्ट मेथड पसंद है। लघु और मधुर, और मूल चर को एक इंट के रूप में रखता है, जिसकी मुझे आवश्यकता है।

हा, मैंने इसे तुरंत स्वीकार कर लिया होगा, लेकिन यह मुझे और 6 मिनट के लिए नहीं जाने देगा।

8

संख्याओं में स्ट्रिंग्स की तुलना में अधिक पूर्वता होती है, इसलिए निश्चित रूप से +ऑपरेटर आपके स्ट्रिंग्स को जोड़ने से पहले संख्याओं में बदलना चाहते हैं।

तुम यह कर सकते थे:

print 'There are ' + CONVERT(varchar(10),@Number) +
      ' alias combinations did not match a record'

या (बल्कि सीमित) स्वरूपण सुविधाओं का उपयोग करें RAISERROR:

RAISERROR('There are %i alias combinations did not match a record',10,1,@Number)
WITH NOWAIT

पृष्ठभूमि की जानकारी के लिए धन्यवाद। मुझे महसूस नहीं हुआ कि साधारण प्रिंट स्टेटमेंट करते समय टी-एसक्यूएल ने पूर्वता के बारे में बहुत सोचा है।

1
@ अदमज-यह printबयानों से कोई लेना-देना नहीं है , प्रति-से। टी-एसक्यूएल एक बहुत ही सरल, काफी पुराने ज़माने की भाषा है। टी-एसक्यूएल में, एक ऑपरेटर के सभी इनपुट एक ही प्रकार के होने चाहिए।
डेमियन_इन_अनबेलियर

धन्यवाद! मुझे लगता है कि मैं कभी-कभी भूल जाता हूं कि 70 के दशक में SQL बनाया गया था। एसक्यूएल सर्वर के पास इसकी (मेरी राय में) एक काफी चिकना नज़र है, जो मुझे लगता है कि यह वास्तव में है की तुलना में अधिक आधुनिक लगता है।

3

आप वर्ण स्ट्रिंग और संख्यात्मक स्ट्रिंग को संयोजित नहीं कर सकते। आपको CONVERT या CAST का उपयोग करके संख्या को स्ट्रिंग में बदलने की आवश्यकता है।

उदाहरण के लिए:

print 'There are ' + cast(@Number as varchar) + ' alias combinations did not match a record'

या

print 'There are ' + convert(varchar,@Number) + ' alias combinations did not match a record'

2

यदि आपके पास इंट और दशमलव मान मुद्रित करने के लिए सेट और प्रारंभिक मूल्य है तो डबल चेक करें ।

यह नमूना एक खाली लाइन को प्रिंट कर रहा है

declare @Number INT
print 'The number is : ' + CONVERT(VARCHAR, @Number)

और यह नमूना छपाई कर रहा है -> संख्या है: 1

declare @Number INT = 1
print 'The number is : ' + CONVERT(VARCHAR, @Number)

1

आप इसे आज़मा सकते हैं,

declare @Number INT = 5                            
print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.