Validation du numéro de mobile SQL

J'ai ma database sql où je voudrais filterr tous les nombres mobiles valides.

J'utilise actuellement comme suit;

WHERE pn.PhoneNumber LIKE '+[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' OR pn.PhoneNumber LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' OR pn.PhoneNumber LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' OR pn.PhoneNumber LIKE '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]' 

Cependant, je reçois toujours des nombres tels que 0000000 , 0 , 0000 etc.
Certains des numéros ne sont pas mobiles irlandais, car ils ne commencent pas avec 08 .
Pour y remédier si je voulais que le début du numéro commence par un 087 ce que je devrais entrer [0][8][7] au lieu de [0-9] ?

essayez de tester cela!

cela donnera des numéros commençant par 087 et mobile(length)=10

 select * from table where mobile_number like '087%' and LEN(mobile_number)=10 

DEMO

Je voudrais créer une table contenant tous les préfixes qui m'intéressent et ensuite l'utiliser pour faire la validation.

Quelque chose comme ….

 Create table Allowed ( Prefix VARCHAR(10) ) insert into allowed values ( '071' ); insert into allowed values ( '072' ); insert into allowed values ( '+44' ); select count(prefix) as OK from allowed where REPLACE( pn.phonenumber, ' ', '') like prefix || '%' 

Vous pouvez toujours effectuer la validation numérique séparément ou combiner la partie regexp avec le suffixe ajouté ci-dessus.

Je sais que c'est dépassé, mais j'ai juste développé un code pour un numéro de mobile au Royaume-Uni que quelqu'un pourrait find utile. Il vérifie avec ou sans espace, trait d'union, etc. après les 5 premiers numbers et renvoie un espace vide si le numéro n'est pas valide – Je dois download des loggings à un tiers qui rejette les loggings avec des numéros de téléphone invalides, mais accepte les blancs.

 Mobile = CASE WHEN MobileTel LIKE '07[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%' THEN left(MobileTel,11) WHEN MobileTel LIKE '07[0-9][0-9][0-9][^0-9][0-9][0-9][0-9][0-9][0-9][0-9]%' THEN (LEFT(MobileTel,5)+subssortingng(MobileTel,7,6)) ELSE '' END