2012-06-19 90 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很好!不要忘记总是指定长度! :) –