在我的领域phone
我有这样的价值观:如何替换MySQL中的一部分字符串?
Phone: 1234567
我想实现的是更换Phone:
(有:
后的空间,所以我可以用数字只有我尝试没有以下。运气
SELECT REPLACE(phone, 'Phone: ', '')
FROM EVENTS
在我的领域phone
我有这样的价值观:如何替换MySQL中的一部分字符串?
Phone: 1234567
我想实现的是更换Phone:
(有:
后的空间,所以我可以用数字只有我尝试没有以下。运气
SELECT REPLACE(phone, 'Phone: ', '')
FROM EVENTS
我通常返回值重命名为一个新的领域,在这种情况下phone_replaced
:
SELECT REPLACE(`phone`, 'Phone: ', '') as `phone_replaced` FROM `events`
但你也可以保持当前的名称phone
:你的别名它使用as
SELECT REPLACE(`phone`, 'Phone: ', '') as `phone` FROM `events`
只要。
+1你实际上并没有将其重命名,但必须别名,它至少还是它的实际返回'REPLACE(列,“胡说:”,“”)',这只是一个噩梦键入 – Dale
真的,我已经添加到我的答案。 –
您可以通过使用PHP来实现它。使用方法:
$phone = "Phone: 1234567"
$arr = explode(" ",$phone);
$phone = $arr[1];
或者使用SQL语法:
SELECT REPLACE("Phone: 1234567", 'Phone: ', '') FROM EVENTS
这将为只有一个电话号码工作,但是我有手机 – EnexoOnoma
@Kaoukkos我已经给了其他的解决办法也很多行。 –
你试试: -
SELECT LTRIM(phone) FROM EVENTS;
了解更多关于LTRIM。
对于保换: -
SELECT REPLACE(phone,phone,LTRIM(phone)) FROM EVENTS;
希望它会帮助你。
这其实工作原理:
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
如果你只是想 “匹配” 行,你应该添加相关的where子句:
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
我认为。如果需要,则应对data
列使用不区分大小写的排序规则。但那是另外一个故事......
确保名称是大小写敏感这里这么Phone:
不一样phone:
SELECT case when phone like 'phone%' then REPLACE(phone, 'phone: ', '')
when phone like 'Phone%' then REPLACE(phone, 'Phone: ', '')
end as Phone_number
FROM EVENTS
我要问,为什么在列名为'phone'你会用文字保存在那里的数据无论如何? – Dale
@Dale你有一个很好的问题,但是我不得不在那里有文本的原因。 – EnexoOnoma
是电话号码:所有结果还是仅仅一些? – Anigel