web-dev-qa-db-ja.com

mysql関数の英数字テキストから先行ゼロをトリムする方法

英数字のテキストフィールドから先行ゼロを削除するためのmysql関数(ある場合)はありますか?

値が「00345ABC」のフィールドは、「345ABC」を返す必要があります。

60
Sean

trim()function を探しています。

さて、ここにあなたの例があります

SELECT TRIM(LEADING '0' FROM myfield) FROM table
132
Chris Bartow

先端:

値が純粋に数値の場合、単純なキャストを使用することもできます。

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

15
lubosdz

テーブルの1つの列全体を更新する場合は、次を使用できます。

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

私はあなたがこれで最善であると信じています:

SELECT TRIM(LEADING '0' FROM myField)
6
JustinD

TRIMでは、末尾の文字、先頭の文字、またはすべての文字を削除できます。 MySQLでのTRIM関数の使用に関するいくつかの例:

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関数を組み合わせて、LEFT/RIGHT関数を調べます。

4
Anna

TRIM ( LEADING間のスペースを削除するだけです

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

単に完璧:

SELECT TRIM(LEADING '0' FROM myfield) FROM table
4
Jaime
SELECT TRIM(LEADING '0' FROM *columnName*) FROM *tableName* ;

これも正しく動作します

1
sanduniYW