SQL Server: все ли числа должны быть указаны латинскими цифрами? - PullRequest
4 голосов
/ 23 марта 2010

Ожидает ли сервер SQL, что числа будут указываться цифрами из латинского алфавита, например ::10000

0123456789

Допустимо ли указывать цифры SQL Server в других алфавитах?

Розеттский камень:

Latin:   01234567890
Arabic:  ٠١٢٣٤٥٦٧٨٩
Bengali: ০১২৩৪৫৬৭৮৯

Я знаю, что клиент (ADO) преобразует 8-битные строки в 16-битные строки Unicode, используя текущую культуру. Но клиент также конвертирует числа в строки, используя свою текущую культуру, например ::

SELECT * FROM Inventory
WHERE Quantity > ২৩৪,৭৮

Который бросает SQL Server для посадки.

Я знаю, что сервер / база данных имеет определенную кодовую страницу и локаль, но это для строк.

Будет ли SQL Server интерпретировать числа, используя активную (или указанную для каждого входа в систему) локаль, или все числовые значения должны указываться латинскими цифрами?

1 Ответ

3 голосов
/ 23 марта 2010

Из того, что я могу сказать, для T-SQL требуются латинские цифры и десятичные точки, указанные как ..

Ни ISNUMERIC (), ни CAST () не могут успешно проверить эти цифры, поэтому числовая константа, использующая эти символы, также не будет работать.

Разрешение клиенту передавать нелатинские цифры звучит опасно беспорядочно (я не уверен, по какому пути проходят ваши данные, но, похоже, существует вероятность внедрения SQL-кода, если локализованный ввод пользователя не проверяется на числовость.

...