2011-12-20 8 views
8

क्यों इस काम ...Varchar चर कहां में काम नहीं कर रहा खंड

DECLARE @MyInt int = 12345; 
SELECT * FROM MyTable WHERE MyId = @MyInt; --Returns 1 row 
SELECT * FROM MyTable WHERE MyId = 12345; --Returns 1 row 

लेकिन यह ऐसा नहीं करता है?

DECLARE @MyVarchar varchar = 'ABCDEF'; 
SELECT * FROM MyTable WHERE MyId = @MyVarchar; --Returns 0 rows 
SELECT * FROM MyTable WHERE MyId = 'ABCDEF'; --Returns 1 row 

एसक्यूएल सर्वर संस्करण 10.50.1746

उत्तर

14

है क्योंकि जब आप declare, डिफ़ॉल्ट varchar लंबाई 1 है। तो @MyVarchar'A' होने पर समाप्त होता है।

यह cast(something as varchar) से अलग है, जहां डिफ़ॉल्ट लंबाई 30 है।

सही बात

DECLARE @MyVarchar varchar(10) = 'ABCDEF'; 

जहां 10 सारणी में स्तंभ की लंबाई है।

+0

ओह, मेरे बारे में मूर्खतापूर्ण। या शायद यह माइक्रोसॉफ्ट की मूर्खतापूर्ण है –

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