SQL Server Вычисляемый столбец - PullRequest
0 голосов
/ 22 февраля 2012

В моей базе данных у меня есть вычисляемый столбец, основанный на поле идентификатора.Его формула выглядит так:

('Q'+right('00000'+CONVERT([varchar],[EnquiryID],(0)),(6)))

Это означает, что он будет предшествовать 0 до 6 цифр.Например, если мой ID был 5, это будет Q000005.Если его 100, то это будет Q000100.

Я заметил, что мой идентификатор уже на 4000 через несколько недель.Поэтому мой вычисляемый столбец выглядит как Q004000.

Мой вопрос, как только он скажет Q999999.Будет ли он начинаться с 1 снова или автоматически добавить еще 0?Так вернется ли он к Q000001 или Q1000000?

Ответы [ 3 ]

5 голосов
/ 22 февраля 2012

Давайте использовать наши клетки мозга и логически проанализировать это:

  • ваше EnquiryID значение переходит в 1'000'000 - поэтому ваше CONVERT(varchar, EnquiryID, 0) возвращает 1000000
  • затем вы добавляете пять нулей, что дает вам: 000001000000
  • теперь вы берете шесть самых правых символов этого: 000000
  • и вы добавляете Q, что дает вам результат Q000000

Так что я думаю, вам лучше отбросить этот вычисленный столбец и воссоздать его с большим количеством цифр! : -)

1 голос
/ 22 февраля 2012

удалите его, как сказал @marc_s.

2 комментария:

1) полезные знания: вычисленные столбцы не хранятся в БД (если они не проиндексированы), поэтому вы можете удалить и создать зановоэто как вы хотите

2) (просто глупый комментарий, но это было первое, что пришло мне в голову): вам действительно нужно это сделать?Давайте использовать наши мозговые клетки и логически проанализировать это также, как сказал @marc_s: 4000 записей «за несколько недель».Допустим, «немногие» - это 3, поэтому у вас в среднем 1333 записи в неделю.999999/1333 = 750 недель, это 13 лет.Вас не беспокоит ничто?:)

1 голос
/ 22 февраля 2012

Могу я предложить:

declare @EnquiryId as Int = 1000000
select ('Q'+right('00000'+CONVERT([varchar],@EnquiryID,(0)),(6))) 
...