Advertisement
cmptrwz

Find Bad User Data Query

Feb 16th, 2012
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.08 KB | None | 0 0
  1. SELECT
  2.     aou.shortname AS "Home Library",
  3.     ac.barcode AS "Primary Barocde",
  4.     au.id AS "Database ID",
  5.     CASE WHEN au.email IS NOT NULL AND au.email !~* '^[^@<> ]+@[^@<> ]+\.[^@.*<> ]{2,}$' THEN 'BAD EMAIL' ELSE 'EMAIL OK' END AS "Email Status",
  6.     au.email,
  7.     CASE WHEN au.day_phone IS NOT NULL AND au.day_phone !~* '^[2-9]\d{2}-\d{3}-(\d{4})( x\d+)?$' THEN 'BAD DAY PHONE' ELSE 'DAY PHONE OK' END AS "Day Phone Status",
  8.     au.day_phone,
  9.     CASE WHEN au.evening_phone IS NOT NULL AND au.evening_phone !~* '^([2-9]\d{2}-\d{3}-\d{4}|011[- 0-9]+)( x\d+)?$' THEN 'BAD EVENING PHONE' ELSE 'EVENING PHONE OK' END AS "Evening Phone Status",
  10.     au.evening_phone,
  11.     CASE WHEN au.other_phone IS NOT NULL AND au.other_phone !~* '^([2-9]\d{2}-\d{3}-\d{4}|011[- 0-9]+)( x\d+)?$' THEN 'BAD OTHER PHONE' ELSE 'OTHER PHONE OK' END AS "Other Phone Status",
  12.     au.other_phone,
  13.     CASE WHEN ac2.barcode IS NOT NULL OR ac.id IS NULL THEN 'HAS BAD BARCODE(S)' ELSE 'BARCODES OK' END AS "Barcodes Status",
  14.     CASE WHEN aua.post_code IS NOT NULL THEN 'HAS BAD POST CODE(S)' ELSE 'POST CODES OK' END AS "Post Codes Status"
  15. FROM actor.usr au
  16.     JOIN actor.org_unit aou ON au.home_ou = aou.id
  17.     LEFT JOIN actor.card ac ON au.card = ac.id
  18.     LEFT JOIN actor.card ac2 ON au.id = ac2.usr AND ac2.barcode !~* '^2\d{13}$' AND ac2.active
  19.     LEFT JOIN actor.usr_address aua ON (au.id = aua.usr OR aua.id = au.mailing_address OR aua.id = au.billing_address) AND post_code !~* '(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$)'
  20. WHERE
  21.     au.profile IN (SELECT id FROM permission.grp_descendants_distance(2)) AND (
  22.         ac.id IS NULL
  23.         OR (au.email IS NOT NULL AND au.email !~* '^[^@<> ]+@[^@<> ]+\.[^@.*<> ]{2,}$')
  24.         OR (au.day_phone IS NOT NULL AND au.day_phone !~* '^[2-9]\d{2}-\d{3}-(\d{4})( x\d+)?$')
  25.         OR (au.evening_phone IS NOT NULL AND au.evening_phone !~* '^([2-9]\d{2}-\d{3}-\d{4}|011[- 0-9]+)( x\d+)?$')
  26.         OR (au.other_phone IS NOT NULL AND au.other_phone !~* '^([2-9]\d{2}-\d{3}-\d{4}|011[- 0-9]+)( x\d+)?$')
  27.         OR (ac2.barcode IS NOT NULL)
  28.         OR (aua.post_code IS NOT NULL)
  29.     )
  30. GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13
  31. ORDER BY 1,2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement