我有一個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 –