как обрезать ведущие нули из буквенно-цифрового текста в функции mysql



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



поле со значением " 00345ABC "должно было бы вернуть"345ABC".

596   8  

8 ответов:

вы ищете функция trim ().

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

SELECT TRIM(LEADING '0' FROM myfield) FROM table

совет:

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

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

Я считаю, что вам было бы лучше с этим:

SELECT TRIM(LEADING '0' FROM myField)

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

USE database_name;
UPDATE `table_name` SET `field` = TRIM(LEADING '0' FROM `field`) WHERE `field` LIKE '0%';

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

SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 

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

SELECT TRIM(LEADING '0' FROM myfield) FROM table

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

SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;

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

Comments

    Ничего не найдено.