Как убрать пробелы в столбце в начале каждого значения?
Имеется БД с таблицей product и столбцом producte_code. Можно ли сделать SQL запрос на удаление пробелов в начале каждого значения в столбце producte_code?
Некоторые товары в интернет-магазине при заполнении, контент-менеджеры записали c пробелом в начале названия товара. Хотелось бы одним запросом все поправить.
- Вопрос задан более трёх лет назад
- 1495 просмотров
Комментировать
Решения вопроса 1
update product t set t.product_code = trim(t.product_code) where t.product_code != trim(t.product_code);
Можно без условия where. Смотреть надо не сломается ли чего (например, какие-нибудь потребители смотрят на дату последнего обновления строки).
Ответ написан более трёх лет назад
Нравится 1 3 комментария
Алексей @a1exDi Автор вопроса
А таблицы писать не в кавычках нужно?
update `products` t
set t.`product_code` = trim(t.`product_code`)
Алексей: Виноват. Ораклист я) У нас без кавычек. Поздно увидел, что СУБД MySQL.

И проверяйте данные передаваемые из формы в базу. Отрезайте лишние пробелы, табуляции и т.д. В PHP, например, это делает функция trim()
Функции STR, SPACE, LTRIM и RTRIM стр. 1
Функция STR () преобразует число к его символьному представлению:
При этом преобразовании выполняется округление, а длина задает длину результирующей строки. Например,
Обратите внимание, что если полученное строковое представление числа меньше заданной длины, то добавляются лидирующие пробелы. Если же результат больше заданной длины, то усекается дробная часть (с округлением); в случае же целого числа получаем соответствующее число звездочек «*»:
Кстати, по умолчанию используется длина в 10 символов. Имея в виду, что год представлен четырьмя цифрами, напишем:

Консоль
Выполнить
Уже почти все правильно. Осталось учесть случай, когда число символов в имени менее 6, так как в этом случае функция STUFF дает NULL . Ну что ж, вытерпим до конца мучения, связанные с использованием этой функции в данном примере, попутно применив еще одну строковую функцию.
Добавим конечные пробелы, чтобы длина имени была заведомо больше 6. Для этого имеется специальная функция SPACE(число пробелов):

Консоль
Выполнить
Функции LTRIM (строковое выражение) и RTRIM (строковое выражение) Отсекают, соответственно, лидирующие и конечные пробелы строкового выражения, которое неявно приводится к типу varchar.
Пусть требуется построить такую строку:
на базе таблицы Passenger. Если мы напишем:

Консоль
Выполнить
то в результате получим что-то типа:
Это связано с тем, что столбец name имеет тип CHAR(30) . Для этого типа короткая строка дополняется пробелами до заданного размера (у нас 30 символов). Здесь нам как раз и поможет функция RTRIM :

Консоль
Выполнить
Функция trim
Функция trim удаляет пробелы с начала и конца строки. Может также удалять другие символы, если их указать вторым параметром.
Синтаксис
trim(строка, [символы]);
Пример
Давайте удалим пробелы по краям строки:
Результат выполнения кода:
Пример
Давайте удалим слеши по краям строки:
Результат выполнения кода:
Пример
Давайте удалим слеши и точки по краям строки:
Результат выполнения кода:
Пример
Функция удаляет любое количество указанных символов, если они стоят с краю:
Результат выполнения кода:
Пример
Можно указать диапазон символов с помощью двух точек ‘..’ . К примеру, укажем, что мы хотим удалить символы от ‘a’ до ‘d’ :
Результат выполнения кода:
Смотрите также
- функцию ltrim ,
которая удаляет пробелы слева - функцию rtrim ,
которая удаляет пробелы справа
Как удалить все пробелы в БД SQL?
@Doofy Могу ли я уточнить что Вы ( к незнакомому человеку, нужно обращатсья на ‘Вы’) имеете в виду? А где еще могут быть пробелы кроме как в string ? ` в ячейке таблицы в базе?` — в БД SQL (в названии имени дампа. Вы издеваетесь? Если бы я что-то нетривиальное имел в виду, я бы наверное написал об этом. Конечто же в ячейке, а в (ах) я уже сам.
8 июн 2016 в 0:22
Ох уж простите меня быдла некультурного, мсье) Попробуйте $out = preg_replace(‘/\s+/’, », $str);
8 июн 2016 в 0:29
@Doofy Большое спасибо Вам). Но я уже ответ ниже оставил.
8 июн 2016 в 0:49
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Если нужно удалить все пробелы:
SELECT REPLACE( `field`, ' ', '' ) FROM `table`;
Если только первые/последние:
SELECT TRIM( `field` ) FROM `table`;
P.S. Читайте доки, они — рулез (C).
Отслеживать
ответ дан 8 июн 2016 в 0:28
9,066 14 14 серебряных знаков 26 26 бронзовых знаков
Господи, Спасибо, Большое, Вам. Но у вас не правильно. Мы удаляем при получении данных, а не изменяем их в БД, в втором варианте. А в первом вообще все пробелы ппц удалит. Нужно по дгурому же. Ладно не трудитесь, спасибо. —- PS P.S. Читайте доки, они — рулез (C). только нужно их читать внимательно ^& ^ UPDATE test_table SET text = LTRIM(RTRIM(text));
8 июн 2016 в 0:44
Что нужно по-другому? В постановке вопроса вообще разное делается в разных случаях.
8 июн 2016 в 0:50
Как. Как удалить все пробелы в БД SQL? 1.На примере — Удалить не при получении данных, а в самой БД. Ниже я привел примеры как именно необходимо удалить пробелы. Всем известно что функция «trim» на всех языках программирования, наверное , удаляет пробелы с начала строки и с её конца. Следовательно, для четкого озознания сути вопроса, должно было быть более чем достаточно данных.Как мне казалось. Но всё равно спасибо. Хорошего вам настроения и здоровья!)