почему t-sql patindex не работает с объявленной переменной? - PullRequest
0 голосов
/ 25 мая 2010

почему этот запрос не работает правильно?

declare @s nvarchar
set @s = 'abcd'
select patindex('%b%', @s)

это возврат ноль.

Ответы [ 2 ]

4 голосов
/ 25 мая 2010

Это работает, если вы добавите размер к первоначальному объявлению varchar:

declare @s nvarchar(10) 
set @s = 'abcd' 
select patindex('%b%', @s) 
2 голосов
/ 25 мая 2010

Это потому, что если вы не определите размер переменной NVARCHAR, то по умолчанию будет установлен размер 1. Таким образом, @s будет содержать только «a».

Вы должны всегда быть осторожны, чтобы убедиться, что вы определяете размеры явно, поскольку различные сценарии ведут себя по-разному, как Я написал здесь .

Итак, просто измените

DECLARE @s NVARCHAR

до (например)

DECLARE @s NVARCHAR(20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...