Как заменить null на 0 в sql
Чтобы заменить значение NULL на 0 в SQL, можно использовать функцию COALESCE . Эта функция принимает несколько аргументов и возвращает первый не NULL аргумент. Если все аргументы NULL , функция вернет NULL . Вот пример использования COALESCE для замены значений NULL на 0 :
SELECT COALESCE(column_name, 0) FROM table_name;
В этом запросе column_name — имя столбца, значения которого нужно заменить, а table_name — имя таблицы, в которой находится столбец. Функция COALESCE заменит все значения NULL в столбце на 0 . Если значение столбца не NULL , то функция вернет его без изменений.
Также можно использовать оператор IS NULL для проверки на NULL и замены его на 0 . Вот пример:
SELECT CASE WHEN column_name IS NULL THEN 0 ELSE column_name END FROM table_name;
Этот запрос также заменит значения NULL на 0 . Если значение столбца не NULL , то запрос вернет его без изменений.
Функция REPLACE
заменяет в строке1 все вхождения строки2 на строку3 . Эта функция, безусловно, полезна в операторах обновления (UPDATE), если нужно изменить (исправить) содержимое столбца. Пусть, например, нужно заменить все пробелы дефисом в названиях кораблей. Тогда можно написать:
Примечание:
Этот пример можно выполнить на странице с упражнениями DML, где разрешаются запросы на изменение данных.
Однако эту функцию можно применять и в более нетривиальных случаях. Давайте определим, сколько раз в названии корабля используется буква «a». Идея проста: заменим каждую искомую букву двумя любыми символами, после чего посчитаем разность длин полученной и искомой строки. Итак,
Консоль
Выполнить
А если нам нужно определить число вхождений произвольной последовательности символов, скажем, передаваемой в качестве параметра в хранимую процедуру? Примененный выше алгоритм в этом случае следует дополнить делением на число символов в искомой последовательности:
Следует быть весьма осторожным с применением данного метода к нахождению числа пробелов. Помимо того, что функция LEN не учитывает концевые пробелы, результат будет зависеть от типа данных.
В строке `World Wide Web` 14 символов. Заменим теперь каждый пробел двухсимвольной строкой, и подсчитаем длину до замены и после:
Мы хотели добавить 2 символа, а получили 88 вместо 16. Дело в том, что тип CHAR является точным типом, а это означает, что длина любой строки этого типа будет иметь указанный размер. Мы задали 50 символов, следовательно, строковое значение будет дополняться концевыми пробелами для выравнивания его до 50 символов, Итого, дополнительно получим (50-14)х2 = 72, и всего 72 + 16 = 88.
Вот если бы мы описали переменную типом VARCHAR(50), то получили желаемый результат:
Изменение значений полей в таблице
UPDATE заменит значения текущих полей таблицы на новые значения.
SET устанавливает какие поля изменять и новые значения, которые нужно присвоить этим полям.
WHERE (если необходимо) — условие на изменение определенных записей. Если WHERE не указан, изменены будут все записи.
При указании параметра LOW_PRIORITY, выполнение UPDATE задержится пока другие клиенты читают таблицу.
Пример запроса на изменение всех записей поля «apple» таблицы «fruit» на определенное значение
UPDATE fruit SET apple=5;
Пример запроса с WHERE который изменяет определенную запись:
UPDATE tovar SET price=500 WHERE >При изменении значения поля можно использовать его текущее значение.
Пример запроса увеличивающего значение поля price в 2 раза:
UPDATE tovar SET price=price*2;
SET в UPDATE вычисляет выражения слева направо.
Пример запроса который удваивает цену (поле price), а потом уменьшает его на 10:
UPDATE tovar SET price=price*2, price=price-10;
Запрос UPDATE возвратит количество полей, которые были изменены в этом запросе.
Использование LIMIT позволит изменять заданное количество записей.
Удаление или замена слова в строке запросом SQL (REPLACE)
При работе над проектом возникла задача: во всех статьях сайта обнаружить и заменить одно строковое значение, на другое. С учетом того, что таких страниц больше пяти сотен, в ручную заниматься этим, совершенно нерационально. Все страницы формируются из статей, размещенных в таблице БД. Следовательно, задача сводится к обработке всех записей таблицы, поиску в них нужного стокового значения и его замены на новое.
Часто для таких задач прибегают к использованию регулярных выражений или делают PHP-скрипт, который обрабатывает каждую строку по отдельности.
Но данную задачу гораздо проще выполнить простым SQL запросом. Для такой ситуации, SQL располагает функцией REPLACE. Эта функция позволяет очень просто удалить или заменить часть текста в строке.
REPLACE("исходная строка", "искомое значение", ["значение для замены"] )
Замена значения в строке запросом SQL
Следовательно, для замены строки значения «10000» во всех строках таблицы на «15000», используем запрос:
UPDATE pages SET content = REPLACE (content, "10000", "15000");
Такой запрос обработает все строки таблицы pages, исправив значение поля content, если оно содержит искомую фразу «10000».
Удаление текста в строке запросом SQL
Для удаления используем подобный запрос, в котором укажем либо пустую строку третьим параметром, либо просто не указывая этот параметр:
UPDATE pages SET content = REPLACE (content, "10000", ""); UPDATE pages SET content = REPLACE (content, "10000");
В результате, в каждой строке таблицы pages, во всех значений поля content будет удалено текстовое значение 10000.
* Подобный механизм можно использовать для очистки или замены тегов, но нужно быть внимательным. Так как здесь идет сравнение строк строго по равенству, то может возникнуть ошибка и теги, содержащие классы или стили удалены не будут.