Это на самом деле работает:
create table T (data char(40));
insert into T values
('Phone: 1235678'),
('Tel: 0505074455'),
('Phone: 0418192244');
select REPLACE(data, 'Phone: ','') from T;
Результат:
REPLACE(DATA, 'PHONE: ','')
1235678
Tel: 05-05-07-44-55
0418192244
Если вы хотите только "соответствие" линии, вы должны добавить соответствующий ИНЕК:
select REPLACE(data, 'Phone: ','') from T
where data LIKE 'Phone: %';
Если вы очень хочу цифры вы можете использовать CAST ... as DECIMAL
select CAST(REPLACE(data, 'Phone: ','') as DECIMAL) from T
where data LIKE 'Phone: %';
Если вам приходится иметь дело с делом, попытайтесь нормализовать строку, используя LOWER
:
select CAST(REPLACE(LOWER(data), 'phone: ','') as DECIMAL) from T
where LOWER(data) LIKE 'phone: %';
Это позже не будет хорошо работать, потому что MySQL не сможет использовать потенциальный индекс на data
I думать. Если вам нужно, вы должны использовать регистр, нечувствительный к регистру для столбца data
. Но это еще одна история ...
http://sqlfiddle.com/#!2/38218d/7
Я должен спросить, почему в колонке под названием 'phone' бы сохранить данные с текстом там так или иначе? – Dale
@ Дале, у вас там хороший вопрос, однако мне пришлось иметь текст там по какой-то причине. – EnexoOnoma
Является ли телефон: по всем результатам или только некоторым? – Anigel