1. 程式人生 > 其它 >Excel 2010 SQL應用043 分離聯絡電話的區號與電話號碼

Excel 2010 SQL應用043 分離聯絡電話的區號與電話號碼

技術標籤:# Execel 2010 SQL應用

目錄

源資料表

解決方案

LEFT函式

LEFT函式與LEFTB函式的區別


源資料表

名稱地址聯絡電話
武威地區急救中心甘肅武威市南大街37號0935-2290755
柳州市醫療急救指揮中心廣西省柳州市廣場路8號0772-2810222
福建省急救中心福建省福州市東街134號0591-755768-9030
鎮江市急救中心江蘇省鎮江市黃山路65號0511-5223421
青海省急救中心(青海人民醫院內)青海省西寧市城東區共和路2號0971-8177911
成都市急救指揮中心成都市人民南路一段122號028-6110915
南陽市急救中心(市中心醫院)河南省南陽市工農路312號
0377-3200033
茂名市人民醫院急救中心茂名市為民路101號0668-2922620
廣州市急救醫療指揮中心廣州市麓苑路31號020-83594877
自貢市急救站四川省自貢市大安區紅和路0813-2207046
馬安山市120醫療急救指揮中心安徽省馬安山市湖南路3號0555-2326114
甘肅省酒泉地區醫療急救中心甘肅省酒泉市西大街72號0937-2013344
泉州市急救中心福建省泉州市豐澤區祥遠路0595-2107832
丹東市救護站120遼寧丹東市錦江大街20號0415-2170120
迪慶州醫療急救中心(州醫院)雲南省中甸縣建塘鎮和平路8號0887-8230480
嘉興市急救站浙江省嘉興市急救站0573-2713714
江西省吉安市急救中心江西省吉安市井岡山大道54號
0796-8224718
安徽省六安市人民醫院安徽六安市皖西西路21號0564-3338481
焦作市120急救指揮中心河南省焦作市和平中街公費醫院內0391-2936224
靖遠120急救中心甘肅靖遠縣新城村12號0943-6128120
瀘州市急救中心(瀘州市人民醫院)四川省瀘州市忠孝路61號0830-2393247
延安市急救指揮中心延安市市區北關0911-2123398
營口市急救中心遼寧營口市站前區新立街0417-3841990
浙江省杭州市急救中心浙江省杭州市孝女路6號0571-87035535
洛陽市急救中心河南省洛陽市中州中路288號0379-3892180
毫州市人民醫院(急診科)安徽毫州市薛家巷0558-5522571
定西地區急救中心
甘肅省定西縣鎮龍路149號0932-8212129
七臺河市120急救中心黑龍江省七臺河市桃山區1464-8289120
常州市紅十字急救中心江蘇常州木梳路26號0519-6969629
內蒙古自治區紅十字急救輸送中心呼和浩特市新華大街90號0471-6296120
保定市急救中心保定市新北街39號0312-2026016
曲靖市急救中心雲南省曲靖市麒麟區市第一人民醫院內0874-3315092
無錫市紅十字救護站無錫市中山路30號0510-2725226
蘇州市第四人民醫院急救站江蘇蘇州市白塔西路16號0512-7298089
山西省原平市第一人民醫院急救中心山西省原平市前進西街181號0350-8223088

上表是全國急救中心地址電話一覽表,其中“聯絡電話”欄位中包含了長途區號和電話號碼兩部分內容,現在需要將“聯絡電話”欄位中的區號與電話分為兩列顯示,將“聯絡電話”分成“長途區號”和“電話號碼”兩個欄位。

解決方案

SELECT 名稱,地址,
       LEFT(聯絡電話,INSTR(聯絡電話,'-')-1) AS 長途區號,
       RIGHT(聯絡電話,LEN(聯絡電話)-INSTR(聯絡電話,'-')) AS 電話號碼
FROM [sheet1$]

本例“聯絡電話”欄位中長途區號的字元長度不一致,分離依據是長途區號與電話號碼中間的分隔符號“-”,因此,需要先通過INSTR函式返回分隔符號“-”在“聯絡電話”欄位中首次出現的位置,然後利用LEFT函式提取聯絡電話的區號。

LEFT函式

LEFT函式的作用是擷取字串最左邊的子字串,其語法如下:

LEFT(string,length)

其中,第一個引數string為指定的字串,如果string包含Null,則返回NullU。第二個引數length用於指定返回的字元數,如果該引數為0,則返回零長度字串("");如果該引數大
於或等於string的字元數量,將返回整個字串。
例如,要擷取字串“ABCDE”最左邊的三個字元“ABC”,可採取如下公式:

LEFT("ABCDE",3)

本例中,提取長途區號的公式為:

LEFT(聯絡電話,INSTR(聯絡電話,'-')-1) AS 長途區號

其中,INSTR(聯絡電話,'-')返回“聯絡電話”欄位中首次出現分隔符“-”的位置。通過-1修正後,INSTR(聯絡電話,'-')-1即為需提取長途區號的長度,最後通過LEFT(聯絡電話,INSTR(聯絡電話,'-')-1)返回“聯絡電話”欄位中的區號部分。

LEFT函式與LEFTB函式的區別

LEFT函式的作用是擷取字串最左側指定長度的子字串,該函式按照指定的字元數量擷取。而LEFTB函式用於指定位元組數量的擷取。本例中如下語句:

SELECT 名稱,LEFT(名稱,2) AS S1,LEFTB(名稱,2) AS S2
FROM [sheet1$]

S1欄位將返回兩個字元長度的子字串。S2欄位將返回兩個位元組長度的子字串。