2009-08-12 13 views
11

मैंने एक tsql प्रक्रिया लिखी जो एक पाठ फ़ाइल में एक स्ट्रिंग डालती है जिसका अर्थ यह है कि सभी चरों को एक स्ट्रिंग में परिवर्तित करने की आवश्यकता होती है। केस स्टेटमेंट द्वारा केस का उपयोग करने के बजाय, क्या ऐसा करने में कोई आसानता है जिसमें सभी मामलों को शामिल किया गया है और स्ट्रिंग प्रकार के किसी भी प्रकार को बल देता है?tsql: स्ट्रिंग प्रकार में चर डालने का सबसे अच्छा तरीका?

CAST(expression AS CHAR) 
-- or: 
CAST(expression AS VARCHAR) 

आप वैकल्पिक रूप से लंबाई निर्दिष्ट कर सकते हैं: अग्रिम

उत्तर

25

सभी टोपियां में

धन्यवाद शाब्दिक पाठ, लोअर केस है कुछ जिसमें आप एक मूल्य को जोड़ चाहिए।

दुर्भाग्यवश, यह डेटाटाइम्स के साथ थोड़ा कठिन है, अगर आप इसे किसी भी तरीके से प्रारूपित करना चाहते हैं जो डिफ़ॉल्ट प्रतिनिधित्व से अलग है।

मेरी जानकारी MSDN site से आई थी। मुझे लगता है कि आपको उस साइट को और दूसरों को ध्यान से पढ़ना होगा और इसके साथ थोड़ा सा खेलना होगा, लेकिन उम्मीद है कि CAST फ़ंक्शन एक अच्छी शुरुआत होगी।

शुभकामनाएं!

0

मुझे नहीं लगता कि वहां है - और यदि वहां थे, तो मैं इस पर भरोसा नहीं करता, क्योंकि कुल स्वरूपण पर शायद बहुत कम नियंत्रण होगा। अपना खुद का निर्माण करें, और यह ठीक दिखने जैसा दिखता है। कारक मनन करने के लिए:

  • तिथि स्वरूपण
  • नंबर, अग्रणी शून्य, दशमलव स्थानों, +/- संकेत
  • लाइन की लंबाई, शब्द तार के बीच
  • अग्रणी रिक्त स्थान, पीछे वाले स्पेस, रिक्त स्थान लपेट कि डॉन ' टी

... यह आगे बढ़ रहा है।

1

आपको हर बार इसे परिवर्तित/कास्ट करने की आवश्यकता है। मैं एक समारोह का उपयोग करने के लिए बनाया:

CREATE FUNCTION QuoteNull 
(
    @InputStr  varchar(8000) --value to force to string 
) 
RETURNS 
varchar(8000) 
AS 

BEGIN 
    RETURN COALESCE(''''[email protected]+'''','null') 
END 

यह मूल्य या सिर्फ शब्द अशक्त अगर यह रिक्त है चारों ओर एकल उद्धरण डालता है, लेकिन आप इसे के रूप में आवश्यक अनुकूलित कर सकते हैं।

CREATE FUNCTION QuoteNull 
(
    @InputStr  sql_variant --value to force to string 
) 
RETURNS 
varchar(8000) 
AS 

BEGIN 
    DECLARE @String varchar(8000) 
    SET @String=COALESCE(''''+ CASE SQL_VARIANT_PROPERTY(@InputStr,'BaseType') 
            WHEN 'datetime' THEN CONVERT(varchar(23),@InputStr,121) 
            ELSE CONVERT(varchar(8000),@InputStr) 
           END 
          +'''','null') 
    RETURN @String 
END 
:

यहाँ एक संस्करण है कि स्वरूपण दिनांक स्वचालित रूप से संभालती है

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