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
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