Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 В чем разница (PATINDEX/CHARINDEX)  [new]
Dmitry_L
Member

Откуда:
Сообщений: 4
Почему запросы

Select PATINDEX('%_%', '194-35_245(197)')
Select CHARINDEX('_', '194-35_245(197)')

возвращают разные значения? Почему с PATINDEX возвращает 1
1 авг 02, 17:05    [43058]     Ответить | Цитировать Сообщить модератору
 Re: В чем разница (PATINDEX/CHARINDEX)  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
потому что знак подчеркиваня означает любой символ....
1 авг 02, 17:14    [43065]     Ответить | Цитировать Сообщить модератору
 Re: В чем разница (PATINDEX/CHARINDEX)  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
см. в BOL....
Pattern Matching in Search Conditions
The LIKE keyword searches for character string, date, or time values that match a specified pattern. For more information, see Data Types. The LIKE keyword uses a regular expression to contain the pattern that the values are matched against. The pattern contains the character string to search for, which can contain any combination of four wildcards.

Wildcard Meaning
% Any string of zero or more characters.
_ Any single character.
[ ] Any single character within the specified range (for example, [a-f]) or set (for example, [abcdef]).
[^] Any single character not within the specified range (for example, [^a - f]) or set (for example, [^abcdef]).
........................
1 авг 02, 17:16    [43069]     Ответить | Цитировать Сообщить модератору
 Re: В чем разница (PATINDEX/CHARINDEX)  [new]
MiCe
Member

Откуда: RUSSIA STAVROPOL Pyatigorsk
Сообщений: 1996
да и вотс....
Select PATINDEX('%[_]%', '194-35_245(197)') 

Select CHARINDEX('_', '194-35_245(197)')
1 авг 02, 17:18    [43073]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: В чем разница (PATINDEX/CHARINDEX)  [new]
Max_Хацкер
Member

Откуда: Челябинск
Сообщений: 154
Кто-нибудь может сказать почему не работает строчка?
print PATINDEX('[а-я]%','2св-3мо-5cб')

Надо отсечь хвост строки начиная с первого символа не являющегося цифрой.
Может это особенности SQL Server 2000....
23 мар 06, 13:35    [2481091]     Ответить | Цитировать Сообщить модератору
 Re: В чем разница (PATINDEX/CHARINDEX)  [new]
Max_Хацкер
Member

Откуда: Челябинск
Сообщений: 154
Уже разобрался. Всем спасибо.
Правильно:

print PATINDEX('%[а-я]%','2св-3мо-5cб')
23 мар 06, 13:42    [2481138]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить