Кто-то ввел тонну числовых данных в таблицу со знаком назад.
Существует ли очевидный способ для зеркального отражения знака в числовом столбце с SQL-оператором?
update my_table
set amount = -amount
where <whatever>
Быстрый 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) предотвращает ненужную активность журнала и ведение индекса. Это всегда хорошая идея, чтобы только обновить строки, которые на самом деле в этом нуждаются.
ОБНОВЛЕНИЕ [таблица] НАБОР [столбец] = ([столбец] * (- 1))
Вы можете добавить предложение WHERE
по мере необходимости, чтобы ограничить, какие строки вы переворачиваете знаками.
update my_table
set amount = -amount
where <whatever>
-121--4631704- Это должно быть просто.
update table set column = -column;