我有一个SQL SERVER charindex
函数的简单问题。声明变量SQL Server charindex
DECLARE @VAR1 varchar
SET @VAR1 = 'abcdef'
PRINT CHARINDEX('c', @VAR1)
上述声明应打印但打印。为什么?
我有一个SQL SERVER charindex
函数的简单问题。声明变量SQL Server charindex
DECLARE @VAR1 varchar
SET @VAR1 = 'abcdef'
PRINT CHARINDEX('c', @VAR1)
上述声明应打印但打印。为什么?
当n(长度)没有在数据定义或变量声明 语句中指定,则默认长度为1
像这样做,你的问题就解决了:
DECLARE @VAR1 varchar(10)
SET @VAR1 = 'abcdef'
PRINT CHARINDEX('c', @VAR1)
欲了解更多信息,请THIS。
感谢您的答案和链接。还了解到:'当使用CAST和CONVERT函数时未指定n时,默认长度为30。 –
@Tim很好!不要忘记总是指定长度! :) –
因为您没有为'varchar'变量声明一个长度,所以它被截断为单个字符。如果你使用'PRINT @ VAR1;',你会看到这个。请参阅http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx –