Как мне установить точность и масштаб в SQL (доступ) - PullRequest
0 голосов
/ 09 ноября 2011

Я пытаюсь создать таблицу в Access.

У меня есть следующий код:

CREATE TABLE Class Enrollement (
   OfferNo            INTEGER      PRIMARY KEY,
   StdNo Text(9) NULL,
  EnrGrade Decimal(2) Percision(8) scale(4) NULL
);

EnrGrade должен быть десятичным, Точность 8, Масштаб 4 и2 десятичных знака.

Последняя строка кода неверна.Как бы я это сделал?

Ответы [ 3 ]

2 голосов
/ 09 ноября 2011

Я полагаю, вы ищете:

Где первое значение - это точность (количество десятичных цифр, затем масштаб или числа после десятичной дроби)

CREATE TABLE ClassEnrollment (
   OfferNo INTEGER PRIMARY KEY,
   StdNo Text(9) NULL,
  EnrGrade Decimal(8, 2) NULL
);
0 голосов
/ 09 ноября 2011

Точность 8, Масштаб 4 и 2 десятичных знака

Эти требования кажутся противоречивыми. Десятичный столбец с точностью до 8 и шкалой 4 может хранить до 4 десятичных знаков.

Возможно, целью спецификации является отображение не менее двух десятичных знаков? например

SQL DDL:

CREATE TABLE ClassEnrollement (
  OfferNo INTEGER PRIMARY KEY,
  StdNo NVARCHAR(9),
  EnrGrade DECIMAL(8, 4)
);

SQL DML:

SELECT OfferNo, StdNo, 
       FORMAT$(ClassEnrollement, '0.00##') 
          AS ClassEnrollement__formatted
  FROM ClassEnrollement;

Или, возможно, дополнительная числовая шкала предназначена для включения произвольного округления? Тип DECIMAL показывает округление путем перемирия, особенность, которую часто упускают, потому что все другие числовые типы показывают округление банкиров. Основное правило заключается в том, чтобы хранить дополнительное место числовой шкалы, чтобы внутреннее округление, каким бы оно ни было, не влияло на сохраняемое необработанное значение, позволяя применить пользовательское округление позже. Два дополнительных могут быть просто чрезмерными;)

0 голосов
/ 09 ноября 2011

Вы должны включить ANSI-92 Query Mode .После этого в своем запросе вы можете написать:

CREATE TABLE Offering (
   OfferNo INTEGER PRIMARY KEY,
   StdNo Text(9) NULL,
  EnrGrade Decimal(8,4) NULL
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...