Обновление SQL для зеркального отражения знака значения?

Кто-то ввел тонну числовых данных в таблицу со знаком назад.

Существует ли очевидный способ для зеркального отражения знака в числовом столбце с SQL-оператором?

5
задан Juan Mellado 3 May 2012 в 10:52
поделиться

4 ответа

update my_table
  set amount = -amount
  where <whatever>
10
ответ дан 18 December 2019 в 10:44
поделиться

Быстрый google для dbase и jdbc вернул ряд ссылок для драйвера xbase jdbc под названием StelsDBF. Не могу сказать, что я использовал его или знаю больше, чем быстрый гугл, но это был бы мой ответ на Java.

Альтернативным решением Java может быть настройка источника данных ODBC для базы данных, а затем использование моста JdstartOdbc

-121--4817470-

. Если вы должны хранить SSN и хотите, чтобы они были зашифрованы, я рекомендую использовать механизм шифрования симметричного ключа, такой как 3DES или A Ключ шифрования должен быть производным от некоторой парольной фразы, которую знают только те, кому разрешен доступ к данным, и что они должны вводить каждый раз при доступе к данным.

Ex: (10 + символьная фраза) - > SHA-1 = > KEY.

Не надейтесь на саму базу данных, чтобы сделать шифрование (хотя, конечно, посмотрите на такие функции, как TDE или какая-либо ОС хоста, которую вы используете в качестве вторичного механизма безопасности), а используйте встроенные библиотеки шифрования .NET и любой язык программирования, который вы используете для чтения и записи в БД.

Это дает преимущество, заключающееся в том, что вам не нужно хранить открытый и закрытый ключ или создавать эти ключи. (что вычислительно дорого) и они относительно большие, поэтому место хранения дороже (относительно) вам также не нужно беспокоиться о том, что ключ будет скомпрометирован, когда несанкционированный пользователь получит доступ к машине, на которой работает ваш код (исключая атаки MITM, происходящие при вводе пользователем парольной фразы). Во-вторых, это гарантирует, что при доступе единственный способ их дешифрования - это пользователь, который авторизован (знает пароль). В зависимости от вашего бюджета (время, усилия, ресурсы) вы можете добавить многофакторную аутентификацию, где ключ шифрования получен как из парольной фразы, так и из некоторого маркера, который авторизованным пользователям понравится смарт-карта. В-третьих, шифрование и дешифрование данных с использованием алгоритма шифрования с симметричным ключом будет намного быстрее.

-121--3995650-
UPDATE MyTable
SET amount = -amount
WHERE amount = ABS(amount)

Включение предложения amount = ABS (amount) предотвращает ненужную активность журнала и ведение индекса. Это всегда хорошая идея, чтобы только обновить строки, которые на самом деле в этом нуждаются.

0
ответ дан 18 December 2019 в 10:44
поделиться

ОБНОВЛЕНИЕ [таблица] НАБОР [столбец] = ([столбец] * (- 1))

Вы можете добавить предложение WHERE по мере необходимости, чтобы ограничить, какие строки вы переворачиваете знаками.

4
ответ дан 18 December 2019 в 10:44
поделиться
update my_table
  set amount = -amount
  where <whatever>
-121--4631704-

Это должно быть просто.

update table set column = -column;
2
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: