2012-06-19 131 views
1

我有一個SQL SERVER charindex函數的簡單問題。聲明變量SQL Server charindex

DECLARE @VAR1 varchar 
SET @VAR1 = 'abcdef' 
PRINT CHARINDEX('c', @VAR1) 

上述聲明應打印但打印。爲什麼?

+1

因爲您沒有爲'varchar'變量聲明一個長度,所以它被截斷爲單個字符。如果你使用'PRINT @ VAR1;',你會看到這個。請參閱http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx –

回答

4

當n(長度)沒有在數據定義或變量聲明 語句中指定,則默認長度爲1


像這樣做,你的問題就解決了:

DECLARE @VAR1 varchar(10) 
SET @VAR1 = 'abcdef' 
PRINT CHARINDEX('c', @VAR1) 

欲瞭解更多信息,請THIS

+1

感謝您的答案和鏈接。還了解到:'當使用CAST和CONVERT函數時未指定n時,默認長度爲30。 –

+1

@Tim很好!不要忘記總是指定長度! :) –