it-swarm-eu.dev

jak oříznout počáteční nuly z alfanumerického textu ve funkci mysql

Jaké jsou funkce mysql (jsou-li nějaké) ke zkrácení úvodních nul z alfanumerického textového pole? 

Pole s hodnotou "00345ABC" by bylo nutné vrátit "345ABC".

55
Sean

Hledáte funkci trim () .

Dobře, tady je váš příklad

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

TIP:

Pokud jsou vaše hodnoty čistě numerické, můžete také použít jednoduché odlévání, např. 

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

bude skutečně převést na 

SELECT * FROM my_table WHERE accountid = 322994

což je v mnoha případech dostačující řešení a také se domnívám, že výkonnost je efektivnější. (Varování - typ hodnoty se změní z STRING na INT/FLOAT).

V některých situacích může být použití funkce odlévání také způsob, jak jít:

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

14
lubosdz

Pokud chcete aktualizovat jeden celý sloupec tabulky, můžete použít

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

Věřím, že s tím budete nejlepší:

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

stačí odstranit mezeru mezi TRIM ( LEADING použití 

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

prostě perfektní:

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

TRIM vám umožní odstranit koncové, vedoucí nebo všechny znaky. Několik příkladů použití funkce TRIM v 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'

Chcete-li odebrat pouze vybrané množství předních/koncových znaků, podívejte se do funkcí LEFT/RIGHT s kombinací funkcí LEN a INSTR

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

To také funguje správně

0
sanduniYW