Добавить десятичную к данным в таблице - PullRequest
2 голосов
/ 27 марта 2012

У меня есть значение в одном из столбцов как «P62519». Я пытаюсь добавить десятичную дробь после первых трех цифр для этого столбца как «P62.519», но она не работает, тип данных для этого столбца - nvarchar (10 )

Update Table
Set ColumnName =   REPLACE(LTRIM(SUBSTRING(Table.ColumnName,1,3)),'','.')
where LEN(Code) > 3

Я попробовал это, но это имя столбца столбца является кластеризованным первичным ключом с другим столбцом в моей таблице, и я не позволил бы мне сделать это с нарушением ограничений, хотя я не уверен, что приведенное выше действие является правильным. Может ли кто-нибудь подсказать, как я могу добавить десятичное число после трех мест в этих значениях в моей базе данных? Спасибо за вашу помощь

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

Убедитесь, что ваши внешние ключи указали ссылочное инициируемое действие ON UPDATE CASCADE.

Я думаю, UPDATE должно выглядеть примерно так:

UPDATE TABLE 
   SET ColumnName = SUBSTRING ( ColumnName, 1, 3 ) + '.' 
                       + SUBSTRING ( ColumnName, 4, LEN ( ColumnName ) - 3 )
 WHERE LEN ( ColumnName ) > 3;
0 голосов
/ 28 марта 2012

Вы можете использовать функцию STUFF():

UPDATE atable
SET Code = STUFF(Code, 4, 0, '.')
WHERE LEN(Code) > 3

Также обратите внимание на советы @ oneday, касающиеся обновления внешних ключей .

0 голосов
/ 27 марта 2012

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

Не могли бы вы вместо этого просто добавить десятичную дробь в свой прикладной слой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...