2010-03-23 1 views
2

Кажется, что SQL Server does not accept numbers formatted использует любой конкретный язык. Он также не поддерживает локальные сети, у которых есть цифры, отличные от 0-9.SQL Server: какой язык следует использовать для форматирования числовых значений в формате SQL Server?

Например, если текущая локаль бенгальская, то число выйдет в «1২3456789». И это всего лишь цифры, неважно, какова будет группировка цифр.

Но такая же проблема возникает для чисел в Инвариант locale, который форматирует числа как «123,456,789», которые SQL Server не принимает.

Существует ли культура, соответствующая тому, что принимает SQL Server для числовых значений? Или мне нужно создать какую-то обычную культуру «sql server», создав правила для этой культуры самим из подпрограмм более низкого уровня?

Если я был в .NET (который я не знаю), я мог бы ознакомиться с Standard Numeric Format strings. Из кодов форматирования, доступных в .NET:

  • с (валюты): $ 123,46
  • д (Десятичный): 1234
  • е (экспоненциальный): 1.052033E + 003
  • F (с фиксированной точкой) : 1234,57
  • г (общее): 123,456
  • н (номер): 1,234.57
  • р (в процентах): 100.00%
  • г (Round Trip): 12345678 9.12345678
  • х (шестнадцатеричный): FF

только 6 принимают всех числовых типов:

  • с (валютой): $ 123,46
  • д (Десятичный): 1234
  • e (Продолжение): 1.052033E + 003
  • f (неподвижная точка): 1234,57
  • г (общее): 123,456
  • н (номер): 1,234.57
  • р (в процентах): 100.00%
  • г (Round Trip): 123456789.12345678
  • х (шестнадцатеричные): FF

И те только 2 генерируют строковые представления, в EN-US локали все равно, что будет принято SQL Server:

  • c (Currency): $ 123.46
  • д (Десятичный): 1234
  • е (экспоненциальный): 1.052033E + 003
  • F (фиксированная точка): 1234,57
  • г (общее): 123,456
  • н (номер): 1,234.57
  • р (в процентах): 100.00%
  • г (Round Trip) : 123456789.12345678
  • х (шестнадцатеричный): ФФ

Из оставшихся двух, фиксируются зависит от цифр локали, а не количество используемого, в результате чего Общее г формата:

  • с (валюта): $ 123,46
  • д (Десятичный): 1234
  • е (экспоненциальный): 1.052033E + 003
  • F (фиксированная точка): 1234,57
  • г (общее): 123,456
  • н (номер): 1,234.57
  • р (в процентах): 100.00%
  • г (Round Trip): +123456789,12345678
  • х (шестнадцатеричный): ФФ

И я даже не могу с уверенностью сказать, что формат г не будет добавлять цифры группировки (например, +1234).

Есть ли язык, который форматирует числа так, как ожидает SQL Server? Есть ли код формата .NET? Код формата java? Код формата Delphi? Код формата VB? Код формата stdio?

латинские-цифра-цифры

ответ

3

Спецификации SQL Server для constants описывают допустимые форматы в выражениях T-SQL и партий:

целочисленных которые представлены константы строкой чисел, не являются , заключенными в кавычки и не содержат десятичные точки. Целочисленные константы должны быть целыми числами; они не могут содержать десятичные числа.

десятичного константы представлены в строке чисел, которые не заключены в кавычках и содержит десятичную точку.

поплавок и реальных констант представлены с помощью научной обозначения.

деньги константы представлены в виде строки чисел с дополнительным десятичной точкой и необязательной валюты символа в качестве префикса. Денежные константы не включены в кавычки. SQL Сервер не применяет никаких правил группировки , таких как вставка запятой (,) каждые три цифры в строках , которые представляют деньги. Запятые игнорируются в любом месте в указанном денежном лите.

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

Хорошей новостью является то, что клиентским приложениям не нужно беспокоиться об этих требованиях. Клиентские приложения должны передавать числовые значения как @parameters, а не как литеральные константы T-SQL.

+0

Принято. +1 для цитирования (и смещения не менее!) Соответствующих частей. Я никогда не видел эту тему в своем 2000 BoL. –

Смежные вопросы