помогите сделать запрос-чтобы удалить ноль вначале

Тема в разделе "Базы данных", создана пользователем Димитрий, 5 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Димитрий

    Димитрий

    Регистр.:
    1 фев 2007
    Сообщения:
    285
    Симпатии:
    77
    В общем у меня есть таблица, в ней колонка с цифрами- типа 0830.

    надо сделать так, чтобы если есть в начале ноль- он удалился ( ноль не всегда)

    Посоветовали так- но пока не пробовал, вроде как-то странно.. что плюс ноль..

    update `products` set `products_model` = `products_model` +0

    то есть внутри products колонка products_model в которой надо значения переделать ( убрать ноль, если он вначале!)

    то есть было 0825, а стало 825..и так далее.
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Вообще, есть вариант сначало сделать бекап, а если и его стрёмно делать- выполни запрос
    SELECT `products_model` +0 FROM `products`
    в пхпадмине и посмотри на результат

    просто сейчас у тебя поле текстовое. Если к строке "0825" прибавить что-то, то мускул преобразует сткоку в число уже без нуля, и прибавит, в нашем случае 0.
     
    Haliff3007 нравится это.
  3. Otis22

    Otis22 Создатель

    Регистр.:
    13 фев 2009
    Сообщения:
    30
    Симпатии:
    9
    Вообще есть такой вариант update `products` set `products_model` CASE WHEN LEFT(products_model,1) = '0' THEN SUBSTRING(products_model FROM 2) ELSE products_model END Но опять такие сделай сначала селект
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
  5. Димитрий

    Димитрий

    Регистр.:
    1 фев 2007
    Сообщения:
    285
    Симпатии:
    77
    проблема была решена вот таким хитрым запросом:


    update products set products_model =trim(products_model);
    update products set products_model=substring(products_model, 2, 255) where substring(products_model, 1, 1)='0' ;
    update products set products_model=substring(products_model, 2, 255) where substring(products_model, 1, 1)='0' ;
    update products set products_model=substring(products_model, 2, 255) where substring(products_model, 1, 1)='0' ;
    update products set products_model=substring(products_model, 2, 255) where substring(products_model, 1, 1)='0' ;
    update products set products_model=substring(products_model, 2, 255) where substring(products_model, 1, 1)='0' ;
     
  6. jors

    jors Писатель

    Регистр.:
    8 фев 2008
    Сообщения:
    5
    Симпатии:
    0
    А зачем строку
    дублировать 5 раз? И одного хватит.
     
  7. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Прошу простить меня за следующее, но ...
    Код:
    update `products` set `products_model` = `products_model` * 1 
    данный запрос действую на текстовые поля, если у вас поле цифровое и оно отмечено как "UNSIGNED ZEROFILL" то только при выборке
    Код:
    select `products_model`*1 ...
     
Статус темы:
Закрыта.