在我的字段phone
上,我喜欢这些值:
Phone: 1234567
我想要实现的是替换Phone:
(:
后面有一个空格,所以我只能使用这个数字。我试过以下没有运气
SELECT REPLACE( phone, 'Phone: ', '' )
FROM EVENTS
答案 0 :(得分:1)
我通常将返回的值重命名为新字段,在本例中为phone_replaced
:
SELECT REPLACE(`phone`, 'Phone: ', '') as `phone_replaced` FROM `events`
但您也可以保留当前名称phone
:
SELECT REPLACE(`phone`, 'Phone: ', '') as `phone` FROM `events`
只要您使用as
对其进行别名。
答案 1 :(得分:1)
这实际上有效:
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
列使用不区分大小写的排序规则。但这是另一个故事...
答案 2 :(得分:0)
您可以使用PHP实现它。使用它:
$phone = "Phone: 1234567"
$arr = explode(" ",$phone);
$phone = $arr[1];
或者使用SQL语法:
SELECT REPLACE("Phone: 1234567", 'Phone: ', '' ) FROM EVENTS
答案 3 :(得分:0)
你试试: -
SELECT LTRIM(phone) FROM EVENTS;
详细了解LTRIM。
替换: -
SELECT REPLACE(phone,phone,LTRIM(phone)) FROM EVENTS;
希望它会对你有所帮助。
答案 4 :(得分:0)
确保此处的名称区分大小写,因此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