2016-10-13 1 views
1

Je table avec des données un mélange d'alpha et numérique, je suis en train de trouver le moyen d'extraire de la valeur que si elle est numériqueISNUMERIC

PSDcode2: 
======== 
631302 
631308 
631309 
631301 
STATE 
STATE 
ON TWP 

Mon instruction select fonctionne très bien, mais je Y a-t-il une meilleure façon de faire cela? grâce

case when PS.PSDcode2 in (' STATE','ON TWP') then 'NULL' else PS.PSDcode2 end as PSDcode2, 
+3

Quelle base de données utilisez-vous? –

+3

Je ne comprends pas - vous mettez la réponse à votre question dans le titre ... – Bridge

+0

sql server 2005 –

Répondre

1

Je partirai avec NOT LIKE approche, il fonctionne bien pour les données

Select * [Table_Name] WHERE PSDcode2 NOT LIKE '%[^0-9]%' 
+0

ah ... merci, cela a résolu ma question –

+0

OLD: cas lorsque PS.PSDcode2 dans ('STATE', 'ON TWP') puis 'NULL' sinon PS.PSDcode2 fin comme PSDcode2 NOUVEAU: cas lorsque PS .PSDcode2 PAS comme '% [^ 0-9]%' PS.PSDcode2 sinon 'NULL' se termine par PSDcode2 –

1

Pour SQL: -

SELECT PSDcode2 FROM [Table_Name] WHERE ISNUMERIC([PSDcode2]) = 1 

vérifier: https://msdn.microsoft.com/en-us/library/ms186272.aspx

OU

Select PSDcode2 [Table_Name] WHERE PSDcode2 NOT LIKE '%[^0-9]%' AND [PSDcode2]!='' 

Pour Oracle: -

SELECT PSDcode2 FROM [Table_Name] WHERE REGEXP_LIKE(PSDcode2,'^[[:digit:]]+$'); 
+1

Je peux compter d'une part le nombre de bases de données qui supportent 'isnumeric()'. La question ne spécifie pas la base de données. –