Как в sql заменить одно значение на другое
Форумчанин
Регистрация: 23.10.2008
Сообщений: 230
как заменить одно значение в ячейке другим
Есть таблица в ячейке которой может быть либо 0 либо 1
Нужен запрос который вставит в ячейку 1 если там стоит 0. И наоборот.
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
UPDATE `table` SET `field` = IF (`field` = 1, 0, 1 )
Форумчанин
Регистрация: 23.10.2008
Сообщений: 230
Спасибо
Я бы «плюсанул» но форум не позволяет
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| работа с диапозоном ip, как проверить одно значение из всех | Зод | Общие вопросы Delphi | 2 | 03.01.2012 21:16 |
| как одно слово заменить не другое? | ilyha93 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 27.12.2011 20:07 |
| Как в ячейке скомбинировать значение по формуле с обычным текстом? | PashaNastya | Microsoft Office Excel | 7 | 30.03.2010 16:59 |
| Как заменить определенное слово в ячейке, на содержимое другой ячейки. | Брысь | Microsoft Office Excel | 2 | 04.03.2010 16:01 |
| Как прочитать значение, которое отображается в ячейке? | viter.alex | Microsoft Office Excel | 4 | 22.01.2009 17:13 |
REPLACE (Transact-SQL)
Заменяет все вхождения указанного строкового значения другим строковым значением.
Синтаксис
REPLACE ( string_expression , string_pattern , string_replacement )
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
string_expression
Строковое выражение, в котором выполняется поиск. string_expression может быть символьного или двоичного типа данных.
string_pattern
Подстрока для поиска. string_pattern может быть символьного или двоичного типа данных. string_pattern не может превышать максимальное число байт, которое может уместиться на странице. Если string_pattern является пустой строкой (»), string_expression возвращается без изменений.
string_replacement
Строка замещения. Аргумент string_replacement может содержать символьные или двоичные данные.
Типы возвращаемых данных
Возвращает значение типа nvarchar, если один из входных аргументов имеет тип данных nvarchar; в противном случае возвращает значение типа varchar.
Возвращает NULL, если какой-либо из аргументов имеет значение NULL.
Если string_expression не относится к типу varchar(max) или nvarchar(max), функция REPLACE усекает возвращаемое значение до 8000 байт. Для возврата значений, превышающих 8000 байт, аргумент string_expression должен быть явно приведен к типу данных с большими значениями.
Замечания
REPLACE производит сравнение, основанное на параметрах сортировки входных данных. Для выполнения сравнения в указанных параметрах сортировки можно воспользоваться функцией COLLATE, чтобы явно указать параметры сортировки для входных данных.
Символ 0x0000 (char(0)) не определен в параметрах сортировки Windows, и его нельзя включать в REPLACE.
Примеры
На следующем примере показано, как строка cde в строке abcdefghicde заменяется на xxx .
SELECT REPLACE('abcdefghicde','cde','xxx'); GO
------------ abxxxfghixxx (1 row(s) affected)
Следующий пример иллюстрирует использование функции COLLATE .
SELECT REPLACE('This is a Test' COLLATE Latin1_General_BIN, 'Test', 'desk' ); GO
------------ This is a desk (1 row(s) affected)
В следующем примере вычисляется количество пробелов в предложении с помощью функции REPLACE . Сначала вычисляется длина предложения с помощью функции LEN . Затем символы ‘ ‘ заменяются символом » с помощью функции REPLACE . После этого снова вычисляется длина предложения. Полученная разность соответствует количеству пробелов в предложении.
DECLARE @STR NVARCHAR(100), @LEN1 INT, @LEN2 INT; SET @STR = N'This is a sentence with spaces in it.'; SET @LEN1 = LEN(@STR); SET @STR = REPLACE(@STR, N' ', N''); SET @LEN2 = LEN(@STR); SELECT N'Number of spaces in the string: ' + CONVERT(NVARCHAR(20), @LEN1 - @LEN2); GO
------------ Number of spaces in the sentence: 7 (1 row(s) affected)
Как заменить 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 , то запрос вернет его без изменений.
Удаление или замена слова в строке запросом 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.
* Подобный механизм можно использовать для очистки или замены тегов, но нужно быть внимательным. Так как здесь идет сравнение строк строго по равенству, то может возникнуть ошибка и теги, содержащие классы или стили удалены не будут.