Дело не в том, что PATINDEX
игнорирует запятую и точку, это ваша модель, которая создала эту проблему.
При PATINDEX
символ дефиса (-
) имеет особое значение - он вФактически оператор, который обозначает включающий диапазон - например, 0-9
обозначает все цифры между 0
и 9
- поэтому, когда вы делаете +-/
, это означает, что все символы между +
и /
(включительно, конечно,). Запятые и точечные символы находятся в этом диапазоне, поэтому вы получаете этот результат.
Исправить шаблон легко: либо используйте |
в качестве логического, либо просто переместите дефис в конец шаблона:
SELECT PATINDEX('%[^0-9/()" "+-]%', '+1235, 36446') -- Result: 6