在我的領域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