MySQL 拆分地址並分別加到欄位中

目前要寫stored procedure 所以必須使用到mysql來解決資料的問題

問題:

地址                         計算地址                       縣市     區   ...
台中市大甲區中山路308號     台中市,大甲區,中山路,30,8,   
需求:
地址                         計算地址                       縣市     區   ...
台中市大甲區中山路308號     台中市,大甲區,中山路,30,8,   台中市   大甲區

需求是需要將地址欄位拆分並將拆分完的資料放到各個欄位
有嘗試先將地址資料加入字串符 但是後續不知道有什麼function可以達到我的要求
目前有用到REGEXP_SUBSTR,substring_index,replace

額外問題

因為有可能會遇到有大里路這種路名
如果依照我自己的寫法可能會拆成大里跟路
所以不知道有什麼方式能解決這種問題
如果有大神能幫忙解決 我會很感激 沒有也沒關係

最佳答案

数据库新手,来参与讨论一下。

之前拿一个 66W 行数据的 5级地区库,来练习 SQL 的时候,有做过类似的功能。

并在浏览器上用 wasm 实现的 SQLite 进行测试时,性能也表现的不错:

  • 每秒有 100W ~ 160W 次的 LEFT JOIN (使得快速拼接路径全名,以及子路径模糊匹配成为可能)
  • 5~6 毫秒识别出 疆维阿克苏温宿县博孜墩柯尔克孜族乡吾斯塘博村一组306号tom800-8585222 的省/市/区/街/村 (新疆维吾尔自治区、阿克苏地区、温宿县博孜墩柯尔克孜族乡吾斯塘博依村)

但没继续做后续的 xx路xx号 识别了 (功力不够,没法用纯 SQL 实现了)

file

1个月前 评论
a1016233 (楼主) 1个月前
wxf666 (作者) 1个月前
a1016233 (楼主) 1个月前
wxf666 (作者) 1个月前
a1016233 (楼主) 1个月前
wxf666 (作者) 4周前
a1016233 (楼主) 4周前
讨论数量: 8

数据库新手,来参与讨论一下。

之前拿一个 66W 行数据的 5级地区库,来练习 SQL 的时候,有做过类似的功能。

并在浏览器上用 wasm 实现的 SQLite 进行测试时,性能也表现的不错:

  • 每秒有 100W ~ 160W 次的 LEFT JOIN (使得快速拼接路径全名,以及子路径模糊匹配成为可能)
  • 5~6 毫秒识别出 疆维阿克苏温宿县博孜墩柯尔克孜族乡吾斯塘博村一组306号tom800-8585222 的省/市/区/街/村 (新疆维吾尔自治区、阿克苏地区、温宿县博孜墩柯尔克孜族乡吾斯塘博依村)

但没继续做后续的 xx路xx号 识别了 (功力不够,没法用纯 SQL 实现了)

file

1个月前 评论
a1016233 (楼主) 1个月前
wxf666 (作者) 1个月前
a1016233 (楼主) 1个月前
wxf666 (作者) 1个月前
a1016233 (楼主) 1个月前
wxf666 (作者) 4周前
a1016233 (楼主) 4周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!