как обрезать начальные нули из буквенно-цифрового текста в функции MySQL - PullRequest
59 голосов
/ 19 сентября 2008

Какие функции mysql существуют (если есть) для обрезания начальных нулей из буквенно-цифрового текстового поля?

Поле со значением «00345ABC» должно возвращать «345ABC».

Ответы [ 8 ]

130 голосов
/ 19 сентября 2008

Вы ищете функцию trim () .

Хорошо, вот ваш пример

SELECT TRIM(LEADING '0' FROM myfield) FROM table
14 голосов
/ 04 января 2013

Совет:

Если ваши значения являются чисто числовыми, вы также можете использовать простое приведение, например

SELECT * FROM my_table WHERE accountid = '00322994' * 1

будет фактически преобразовано в

SELECT * FROM my_table WHERE accountid = 322994

, что является достаточным решением во многих случаях, а также я считаю, что производительность более эффективна. (предупреждение - тип значения изменяется с STRING на INT / FLOAT).

В некоторых ситуациях использование некоторой функции приведения может также быть подходящим способом:

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

8 голосов
/ 02 февраля 2016

Если вы хотите обновить один полный столбец таблицы, вы можете использовать

USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';
6 голосов
/ 19 сентября 2008

Полагаю, вам лучше всего это:

SELECT TRIM(LEADING '0' FROM myField)
4 голосов
/ 05 декабря 2016

TRIM позволит вам удалить завершающий, ведущий или все символы. Некоторые примеры использования функции TRIM в MySQL:

select trim(myfield) from (select '   test' myfield) t;
>> 'test'
select trim('0' from myfield) from (select '000000123000' myfield) t;
>> '123'
select trim(both '0' from myfield) from (select '000000123000' myfield) t;
>> '123'
select trim(leading '0' from myfield) from (select '000000123000' myfield) t;
>> '123000'
select trim(trailing '0' from myfield) from (select '000000123000' myfield) t;
>> '000000123'

Если вы хотите удалить только определенное количество начальных / конечных символов, посмотрите на функции ВЛЕВО / ВПРАВО, с комбинацией функций LEN и INSTR

4 голосов
/ 08 августа 2009

просто идеально:

SELECT TRIM(LEADING '0' FROM myfield) FROM table
3 голосов
/ 31 мая 2012

просто удалите пробел между TRIM ( LEADING использовать

SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 
1 голос
/ 02 марта 2018
SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;

Это также работает правильно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...