Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm kiếm mờ địa chỉ đường phố trong MySQL

Mặc dù nó không hoàn hảo và có thể khá chậm, nhưng bạn sẽ muốn sử dụng một biểu thức chính quy qua REGEXP ().

Đây là một biểu thức chính quy chuyển đầu để khớp với hầu hết các trường hợp (cũng như ví dụ của bạn):

(?isx)                  # search across multiple lines and ignore case
(                       # full match
  (                       # st number - what about number words like one or two?
    \d+
  )
  \s+                     # whitespace
  (                       # street name (one or more words)
    [a-z]+
    (?:
      \s+
      [a-z]+
    )*
  )
  \s+                     # whitespace
  (                       # street type
    al(?:y\.?|ley)          # aly, aly. or alley
  |
    ave(?:\.|nue)?          # ave, ave., or avenue
  |
    b(?lvd\.?|oulevard)     # blvd, blvd. or boulevard
  |
    c(?:t\.?|ourt)          # ct, ct. or court
  |
    cir(?:\c\.?|cle)?       # cir, circ, circ. or circle
  |
    cres(?:\.|cent)?        # cres, cres. or crescent
  |
    dr(?:\.|ive)?           # dr, dr. or drive
  |
    exp(?:y\.?|ressway)     # expy, expy. or expressway
  |
    f(?:wy\.?|reeway)       # fwy, fwy. or freeway
  |
    g(?:rdns\.?|ardens)     # grdns, grdns. or gardens
  |
    h(?:wy\.?|ighway)       # hwy, hwy. or highway
  |
    l(?n\.?|ane)            # ln, ln. or land
  |
    m(?:nr\.?|anor)         # mnr, mnr. or manor
  |
    m(?:trwy\.?|otorway)    # mtrwy, wtrwy. or motorway
  |
    pl(?:\.|ace)?           # pl, pl. or place
  |
    r(?:d\.?|oad)           # rd, rd. or road
  |
    st(?:\.|reet)?          # st, st. or street
  |
    t(?:pk\.?|urnpike)      # tpk, tpk. or turnpike
  |
    ter(?:\r?\.?|race)      # ter, ter., terr, terr. or terrace
  |
    tr(?:l.\?|ail)          # trl, trl. or trail
  |
    pike|park|walk|loop|bay|close|gate|highlands
  |
    row|way|oval|dell|rise|vale|byway|lawn
  )
  \,?                     # optional comma
  \s+                     # whitespace
  (                       # optional number, unit, apt or floor
    (
      \#                    # number
    |
      unit                  # unit
    |
      num(?:\.|ber)         # num, num. or number
    |
      ap(?:t\.?|artment)    # apt, apt. or apartment
    |
      fl(?:\.|oor)?         # fl, fl. or floor
    )
    \s+
    \d+
  )?
)

Cái nào sẽ trở lại:

$ 1 - đối sánh đầy đủ

$ 2 - số nhà

$ 3 - tên đường

$ 4 - loại đường phố

$ 5 - số đơn vị hoặc apt (tùy chọn)

Để sử dụng điều này trong mysql, bạn sẽ cần loại bỏ tất cả các nhận xét (từ '#' đến eol), xóa dòng đầu tiên (chuyển đổi tùy chọn) và thu gọn mọi thứ thành một dòng duy nhất mà không có bất kỳ khoảng trắng nào.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để sử dụng DATE () trong Doctrine 2 DQL?

  2. Laravel từ Raw DB đến Eloquent

  3. CURRENT_TIME Ví dụ - MySQL

  4. nhập CSV sang MySQL và ngày chuyển đổi

  5. gem mysql2 không biên dịch được với MySQL 5.6.12 trên OS X với Homebrew