在我的领域phone
,我喜欢这些价值观:
Phone: 1234567
我想要实现的是替换Phone:
(后面有一个空格,:
所以我只能用数字。我尝试了以下没有运气
SELECT REPLACE( phone, 'Phone: ', '' )
FROM EVENTS
我通常将返回的值重命名为一个新字段,在这种情况下phone_replaced
:
SELECT REPLACE(`phone`, 'Phone: ', '') as `phone_replaced` FROM `events`
但您也可以保留当前名称phone
:
SELECT REPLACE(`phone`, 'Phone: ', '') as `phone` FROM `events`
只要您使用as
.
这实际上有效:
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: %';
data
以后的表现不会很好,因为我认为MySQL 将无法使用潜在的索引。data
如果需要,您应该对列使用不区分大小写的排序规则。但那是另一回事了……
您可以通过使用 PHP 来实现它。用它:
$phone = "Phone: 1234567"
$arr = explode(" ",$phone);
$phone = $arr[1];
或者使用 SQL 语法:
SELECT REPLACE("Phone: 1234567", 'Phone: ', '' ) FROM EVENTS
你试试 :-
SELECT LTRIM(phone) FROM EVENTS;
阅读更多关于LTRIM的信息。
更换:-
SELECT REPLACE(phone,phone,LTRIM(phone)) FROM EVENTS;
希望它会帮助你。
确保名称在此处区分大小写,因此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