programing

문자열 바꾸기 - 주소 약어

css3 2023. 10. 12. 23:25

문자열 바꾸기 - 주소 약어

기본적으로 나는 거리 주소(예: 노스 라레도 로드 321)를 위한 칼럼을 가지고 있습니다.이 열에는 10,000개 이상의 기록이 있습니다.일부 레코드는 완전히 약어화되지 않은 것도 있고 일부와 일부는 완전히 약어화된 것도 있습니다.포인트는 일관성이 없습니다(접근하기 전에는 이랬습니다).모든 주소의 방향성(N,S,E,W)과 거리 이름(로드, blvd, ave 등)을 축약하여 두 번째 열에 추가해야 합니다.방법론이나 이미 작성된 해결책을 제시할 수 있습니다.다음 테스트 코드와 혼합된 결과를 가져오는 중입니다.

/* First find/update directionals */
UPDATE hospital
set tiger_address = replace(street, 'North', 'N')
where street LIKE "%North%"
;
UPDATE hospital
set tiger_address = replace(street, 'South', 'S')
where street LIKE "%South%"
;
UPDATE hospital
set tiger_address = replace(street, 'East', 'E')
where street LIKE "%East%"
;
UPDATE hospital
set tiger_address = replace(street, 'West', 'W')
where street LIKE "%West%"
;
/* Second look for streets to abbreviate */    
UPDATE hospital
set tiger_address = replace(tiger_address, 'Alley', 'Aly')
where tiger_address LIKE "%Alley%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Anex', 'Anx')
where tiger_address LIKE "%Anex%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Arcade', 'Arc')
where tiger_address LIKE "%Arcade%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Avenue', 'Ave')
where tiger_address LIKE "%Avenue%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Bayou', 'Byu')
where tiger_address LIKE "%Bayou%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Beach', 'Bch')
where tiger_address LIKE "%Beach%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Bend', 'Bnd')
where tiger_address LIKE "%Bend%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Bluff', 'Blf')
where tiger_address LIKE "%Bluff%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Bluff', 'Blfs')
where tiger_address LIKE "%Bluffs%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Street', 'St')
where tiger_address LIKE "%street%"
;

UPDATE hospital
set tiger_address = replace(street, 'Road', 'Rd')
where tiger_address LIKE "%road%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Drive', 'Dr')
where tiger_address LIKE "drive%"
;
UPDATE hospital
set tiger_address = replace(tiger_address, 'Boulevard', 'Blvd')
where tiger_address LIKE "boulevard%"
;

그곳의 나이는 더 나은 방법이 있어야 합니다.감사해요.

단어에서 하나의 청크를 삭제하는 것은 MariaDB의 것을 사용하여 이루어질 수 있습니다.regexp_replace긍정적인 선후견지명과 후견지명.Bayou와 Boulevard의 경우 제가 사용합니다.replace.

select replace(replace(
  regexp_replace(
    'North East South West Alley Anex Arcade Avenue '
    'Bayou Beach Bend Bluff Bluffs Street Road Drive Boulevard',

    '(?<=N)orth|(?<=S)outh|(?<=E)ast|(?<=W)est|(?<=Al)le(?=y)|'
    '(?<=An)e(?=x)|(?<=Arc)ade|(?<=Ave)nue|(?<=B)ea(?=ch)|(?<=B)e(?=nd)|'
    '(?<=Bl)uf(?=f)|(?<=St)reet|(?<=R)oa(?=d)|(?<=Dr)ive',

    ''),
  'Bayou', 'Byu'),
  'Boulevard', 'Blvd')

언급URL : https://stackoverflow.com/questions/26990227/string-replace-address-abbreviations