Wednesday, May 31

ACN Validation with SQL (Australian Company Number)

Carrying on from earlier, here's what you need to use to find invalid ACNs in your database.

Exciting stuff.

select replace(acn, ' ', ''), Name
from Copmany C
where acn <> ''
and (acn not like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
or right(10-
(( CAST( SUBSTRING( replace(acn, ' ', ''), 1, 1 ) AS integer ) * 8 )
+ ( CAST( SUBSTRING( replace(acn, ' ', ''), 2, 1 ) AS integer ) * 7 )
+ ( CAST( SUBSTRING( replace(acn, ' ', ''), 3, 1 ) AS integer ) * 6 )
+ ( CAST( SUBSTRING( replace(acn, ' ', ''), 4, 1 ) AS integer ) * 5 )
+ ( CAST( SUBSTRING( replace(acn, ' ', ''), 5, 1 ) AS integer ) * 4 )
+ ( CAST( SUBSTRING( replace(acn, ' ', ''), 6, 1 ) AS integer ) * 3 )
+ ( CAST( SUBSTRING( replace(acn, ' ', ''), 7, 1 ) AS integer ) * 2 )
+ ( CAST( SUBSTRING( replace(acn, ' ', ''), 8, 1 ) AS integer ) * 1 ) ) % 10, 1)
<> substring(replace(acn, ' ', ''),9,1))

No comments: