Ваш вопрос не совсем понятен, что, вероятно, вызвано вашими примерами данных, где столбец содержит как числа, так и пустую строку.
Насколько я понимаю, вы хотите заменить определенные строки (а именно: пустая строка и «-1») с нулем. Вы хотите делать это очень часто, потому что данные постоянно добавляются в таблицу, и вы хотите позаботиться об этих «недействительных» записях. Вы беспокоитесь о производительности, и с помощью sh вы можете так или иначе заставить СУБД просматривать только новые строки и, таким образом, не читать всю таблицу при каждом обновлении.
Поскольку вы показываете пустую строку в столбец, я предполагаю, что тип столбца является строковым типом (например, VARCHAR
). Первым делом, на мой взгляд, стоит подумать, хотите ли вы , чтобы этот столбец был строкой вообще. Если бы это был числовой столбец (например, INT
), не было бы пустых строк для начала. Кроме того, -1 всегда будет одним и тем же числом, в то время как строка может иметь начальный или конечный пробел или специальные символы, вы не видите.
Тогда вы, похоже, считаете -1 нежелательным или недействительным. Так зачем же вводить это? Существует два способа избежать таких записей:
- Проверочное ограничение , создающее исключение для вставок с недопустимыми данными.
- Триггер это автоматически изменяет недопустимое значение на что-то допустимое.
При любом из двух методов у вас больше не будет недопустимых данных в таблице, и вам не нужно будет запускать обновления для восстановления.