Я пытаюсь загрузить огромное количество в Field1 INT
, который может содержать только max=2,147,483,647
, в соответствии с ним я не могу изменить DDL, поэтому попытался найти решение adhoc для вырезания одиночного цифры от середины этого номера, а затем добавить проверку на уникальность.
Эти цифры относятся к следующему: 290000
, поэтому я хочу сохранить этот формат с нулями в середине, чтобы легко распознать. Я не хочу вводить какие-либо новые столбцы/таблицы в эту задачу, поскольку это ограничено свободой там, это сторонняя схема.TSQL remap большое число, чтобы уменьшить, но сохранить идентификатор
Может ли кто-нибудь предложить лучшее решение, как переназначить/сохранить все номера под этим лимитом; это мой проект:
DECLARE @fl FLOAT = 290000
DECLARE @I INT
SELECT @i = (SUBSTRING(CAST(CAST(@fl AS BIGINT) AS VARCHAR(18)),1,4) +
SUBSTRING(CAST(CAST(@fl AS BIGINT) AS VARCHAR(18)),7,LEN(CAST(CAST(@fl AS BIGINT) AS VARCHAR(18)))) )
select @i;
Tx все, Alexei решение лучше для меня, вот что у меня есть: 1. У меня есть как 10K + строк, 2. Это поле должно быть уникальным, 3.Это поле должно соответствовать INT (менее 2147483647). 4. У меня нет никакого контроля, чтобы изменить какой-либо DDL в пункте назначения 6. В идеале я хотел бы сохранить шаблон этих идентификаторов для отслеживания/исследования –
Tx Rocky, он тоже работает, мне просто нужно сохранить этот шаблон, т.е. и последние 3-4 цифры. –