SQL рд╕рд░реНрд╡рд░ 2008 рдореЗрдВ рдпреВрдХреЗ рдПрдбреНрд░реЗрд╕ рдкреЛрд╕реНрдЯрдХреЛрдб рдХреА рд╕рдлрд╛рдИ
рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ, рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓реЗрдВ рдФрд░ рдпреВрдХреЗ рдкреЛрд╕реНрдЯрдХреЛрдб рдХреЛ рд╕рд╣реА рд╕реНрдерд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдкреБрди: рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдВ
рд╕рдВрджрд░реНрдн
рдпрд╣ рд▓реЗрдЦ рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рд░реВрдкрдг рдХреЛ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдЫреВрдЯ рдЧрдП рдереЗ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реАрдзреЗ SSMS рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ;
рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ;
- рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕рд╣рд┐рдд) рд╕реЗ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВ
- рдорд╛рдирдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ;
- рдкреЛрд░реНрдЯреНрд╕рдорд╛рдЙрде рдкреАрдУ рд╣реИ, рдХреЛрд▓рдЪреЗрд╕реНрдЯрд░ рд╕реАрдУ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЗрд╕реЗ P0 рдпрд╛ C0 (рдПрдХ рд╢реВрдиреНрдп) рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- Ilford рдФрд░ Reading IG рдФрд░ RG рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА G . рдХреЗ рд╕реНрдерд╛рди рдкрд░ 6 рдХреЗ рд╕рд╛рде рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдкреЛрд╕реНрдЯрдХреЛрдб рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд░реНрдХ рдЖрдЙрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдЬрдЧрд╣ рдбрд╛рд▓реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдкреНрд░рд╛рд░реВрдк рд╕рд╣реА рд╣реИ рдФрд░ рдпрджрд┐ рд╕рд╣реА рд╣реИ рддреЛ рдПрдХ рдирдпрд╛ рдорд╛рди рд▓реМрдЯрд╛рдПрдВ, рдЕрдиреНрдпрдерд╛ рдкреБрд░рд╛рдиреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЛ рдпреВрдирд╛рдЗрдЯреЗрдб рдХрд┐рдВрдЧрдбрдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯрдХреЛрдб рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
SQL
CREATE FUNCTION CleansePostCode (@PostCode VARCHAR(100)) RETURNS VARCHAR(100) AS BEGINDECLARE @OldPostCode VARCHAR(100)SET @OldPostCode=LTRIM(RTRIM(@PostCode))
--Clean to Numbers and LettersDECLARE @Letter INTSET @Letter = PATINDEX('%[^0-Z]%',@PostCode)BEGINWHILE @Letter>0BEGINSET @PostCode = STUFF(@PostCode,@Letter,1,'')SET @Letter = PATINDEX('%[^0-Z]%',@PostCode)ENDEND
--Replace obvious errorsSET @PostCode =(CASE WHEN LEFT(@PostCode,2)='P0' THEN STUFF(@PostCode,1,2,'PO')WHEN LEFT(@PostCode,2)='C0' THEN STUFF(@PostCode,1,2,'CO')WHEN LEFT(@PostCode,2)='I6' THEN STUFF(@PostCode,1,2,'IG')WHEN LEFT(@PostCode,2)='HO' THEN STUFF(@PostCode,1,2,'HD')WHEN LEFT(@PostCode,2)='C8' THEN STUFF(@PostCode,1,2,'CB')WHEN LEFT(@PostCode,2)='D0' THEN STUFF(@PostCode,1,2,'DO')WHEN LEFT(@PostCode,2)='H5' THEN STUFF(@PostCode,1,2,'HS')WHEN LEFT(@PostCode,2)='0L' THEN STUFF(@PostCode,1,2,'OL')WHEN LEFT(@PostCode,2)='0X ' THEN STUFF(@PostCode,1,2,'OX')WHEN LEFT(@PostCode,2)='P0' THEN STUFF(@PostCode,1,2,'PO')WHEN LEFT(@PostCode,2)='R6' THEN STUFF(@PostCode,1,2,'RG')ELSE @PostCode END)
--Works out correct pattern and insert spaceSET @PostCode = (CASE WHEN @PostCode LIKE '[A-Z][A-Z][0-9][0-9][A-Z][A-Z]' THEN LEFT(@PostCode,3)+' '+RIGHT(@PostCode,3)WHEN @PostCode LIKE '[A-Z][0-9][0-9][A-Z][A-Z]' THEN LEFT(@PostCode,2)+' '+RIGHT(@PostCode,3)WHEN @PostCode LIKE '[A-Z][0-9][0-9][0-9][A-Z][A-Z]' THEN LEFT(@PostCode,3)+' '+RIGHT(@PostCode,3)WHEN @PostCode LIKE '[A-Z][0-9][A-Z][0-9][A-Z][A-Z]' THEN LEFT(@PostCode,3)+' '+RIGHT(@PostCode,3)WHEN @PostCode LIKE '[A-Z][A-Z][0-9][0-9][0-9][A-Z][A-Z]' THEN LEFT(@PostCode,4)+' '+RIGHT(@PostCode,3)WHEN @PostCode LIKE '[A-Z][A-Z][0-9][A-Z][0-9][A-Z][A-Z]' THEN LEFT(@PostCode,4)+' '+RIGHT(@PostCode,3)ELSE @PostCode END)
--Update @NewPostCode to old value if pattern does not match, or else use new value.DECLARE @NewPostCode VARCHAR(100)IF (CASE WHEN @PostCode LIKE '[A-Z][A-Z][0-9] [0-9][A-Z][A-Z]' THEN 1WHEN @PostCode LIKE '[A-Z][0-9] [0-9][A-Z][A-Z]' THEN 2WHEN @PostCode LIKE '[A-Z][0-9][0-9] [0-9][A-Z][A-Z]' THEN 3WHEN @PostCode LIKE '[A-Z][0-9][A-Z] [0-9][A-Z][A-Z]'THEN 4WHEN @PostCode LIKE '[A-Z][A-Z][0-9][0-9] [0-9][A-Z][A-Z]' THEN 5WHEN @PostCode LIKE '[A-Z][A-Z][0-9][A-Z] [0-9][A-Z][A-Z]' THEN 6ELSE 0 END)=0BEGIN SET @NewPostCode=@OldPostCodeENDELSESET @NewPostCode=@PostCodeRETURN @NewPostCodeEND