cum să tăiați zerouri de la textul alfanumeric în funcția mysql

Ce funcții MySQL există (dacă există) pentru a elimina zerouri de la un câmp de text alfanumeric?

Câmpul cu valoarea "00345ABC" va trebui să returneze "345ABC".

0

7 răspunsuri

TRIM vă va permite să eliminați caracterele de sfârșit, de conducere sau toate caracterele. Câteva exemple privind utilizarea funcției TRIM în 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'

Dacă doriți să eliminați numai o anumită cantitate de caractere de tip leading/trailing, căutați funcțiile LEFT/RIGHT, combinând funcțiile LEN și INSTR

0
adăugat

Dacă doriți să actualizați o întreagă coloană a unui tabel, puteți utiliza

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

Căutați funcția trim() .

Bine, iată exemplul tău

SELECT TRIM(LEADING '0' FROM myfield) FROM table
0
adăugat
Este aceasta și pentru mai multe zerouri?
adăugat autor Peter, sursa
++ Specific TRIM (LEADING '0' FROM '000345ANB095')
adăugat autor Tom Ritter, sursa
Aceasta va lăsa valoarea goală dacă este deja "0000".
adăugat autor arslion, sursa

Cred că ați fi cel mai bine cu asta:

SELECT TRIM(LEADING '0' FROM myField)
0
adăugat

eliminați doar spațiul dintre TRIM (LEADING ) utilizare

SELECT * FROM my_table WHERE TRIM(LEADING '0' FROM accountid ) = '00322994' 
0
adăugat
Va funcționa acest lucru cu mai multe zerouri?
adăugat autor Peter, sursa

BACSIS:

Dacă valorile dvs. sunt pur numerice, puteți utiliza, de asemenea, turnare simplă, de ex.

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

va converti în fapt

SELECT * FROM my_table WHERE accountid = 322994

care este o soluție suficientă în multe cazuri și, de asemenea, cred că performanța este mai eficientă. (modificarea tipului de avertizare de la STRING la INT/FLOAT).

În unele situații, utilizarea unei anumite funcții de turnare ar putea fi, de asemenea, o modalitate de a merge:

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

0
adăugat
Cred că + 0 este o modalitate mai frecventă de a arunca într-un int mai mult decât * 1
adăugat autor mpen, sursa
Acest lucru este foarte util dacă valoarea este ca "000000".
adăugat autor Septian Primadewa, sursa

SELECTAREA TRIM (LEADING '0' DIN columnName ) FROM tableName ; Acest lucru, de asemenea, funcționează corect

0
adăugat
MySQL - comunitatea Română
MySQL - comunitatea Română
19 participanți

Comunitatea română a programatorilor MySQL.