Excel 2010 SQL應用043 分離聯絡電話的區號與電話號碼
阿新 • • 發佈:2020-12-23
技術標籤:# Execel 2010 SQL應用
目錄
源資料表
名稱 | 地址 | 聯絡電話 |
武威地區急救中心 | 甘肅武威市南大街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欄位將返回兩個位元組長度的子字串。