2012-06-19 2 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

При п (длина) не указано в определении данных или переменной заявление, длина по умолчанию 1.


Делают это, как это и ваша проблема решена:

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

Для получения дополнительной информации, проверьте THIS.

+1

спасибо за ответ и ссылку. Также узнал об этом: «Когда n не указывается при использовании функций CAST и CONVERT, длина по умолчанию равна 30. ' –

+1

@ Тим приятно! Не забудьте всегда указывать длину! :) –