Cela fonctionne réellement:
create table T (data char(40));
insert into T values
('Phone: 1235678'),
('Tel: 0505074455'),
('Phone: 0418192244');
select REPLACE(data, 'Phone: ','') from T;
Résultat:
REPLACE(DATA, 'PHONE: ','')
1235678
Tel: 05-05-07-44-55
0418192244
Si vous ne souhaitez que des lignes "correspondants", vous devez ajouter une pertinente clause where:
select REPLACE(data, 'Phone: ','') from T
where data LIKE 'Phone: %';
Si vous veux vraiment numéros vous pourriez utiliser CAST ... as DECIMAL
select CAST(REPLACE(data, 'Phone: ','') as DECIMAL) from T
where data LIKE 'Phone: %';
Si vous devez traiter le cas, essayez de normaliser la chaîne en utilisant LOWER
:
select CAST(REPLACE(LOWER(data), 'phone: ','') as DECIMAL) from T
where LOWER(data) LIKE 'phone: %';
plus tard ne peut pas bien parce que MySQL ne sera pas en mesure d'utiliser l'indice potentiel sur data
I pense. Si vous en avez besoin, vous devez utiliser un classement insensible à la casse pour la colonne data
. Mais c'est une autre histoire ...
http://sqlfiddle.com/#!2/38218d/7
Je dois demander pourquoi dans la colonne appelée 'phone' vous sauverait les données avec le texte là-dedans en tous cas? – Dale
@Dale vous avez une bonne question là-bas, mais je devais avoir du texte là-bas pour une raison. – EnexoOnoma
Est-ce que le téléphone: sur tous les résultats ou juste certains? – Anigel