2016-10-13 4 views
1

У меня есть таблица с данными смеси альфа и числовой, я пытаюсь найти способ извлечь значение, только если это числовоеIsNumeric функция

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

Мой оператор выбора будет работать нормально, но я просто есть ли лучший способ сделать это? благодаря

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

Какую базу данных вы используете? –

+3

Я не понимаю - вы ответили на свой вопрос в заголовке ... – Bridge

+0

sql server 2005 –

ответ

1

Я пойду с NOT LIKE подход работает хорошо для любых данных

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

ах ... спасибо, это решить мой вопрос –

+0

OLD: случая, когда PS.PSDcode2 в ('СОСТОЯНИЯ', 'ON РПТА'), то 'NULL' еще PS.PSDcode2 конца, как PSDcode2 NEW: случая, когда PS .PSDcode2 НЕ нравится '% [^ 0-9]%', тогда PS.PSDcode2 else 'NULL' end as PSDcode2 –

1

Для SQL: -

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

проверить это: https://msdn.microsoft.com/en-us/library/ms186272.aspx

ИЛИ

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

Oracle: -

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

Я могу с одной стороны рассчитывать количество баз данных, поддерживающих 'isnumeric()'. В вопросе не указывается база данных. –

Смежные вопросы