2013-11-14 3 views
6

Может ли кто-нибудь сказать мне запрос, чтобы проверить, является ли строка числом (двойная точность). Он должен возвращать true, если строка - это число. иначе он должен вернуть false.Запрос postgres для проверки строки - это номер

считают:

 s1 character varying; 
     s2 character varying; 

     s1 ='12.41212' => should return true 
     s2 = 'Service' => should return false 

ответ

11

Я думаю, что самый простой способ будет регулярное выражение матч:

select '12.41212' ~ '^[0-9\.]+$' 
=> true 

select 'Service' ~ '^[0-9\.]+$' 
=> false 
+0

Как очарование! Благодарю. – Daria

+0

.123.456.789. тоже пройдет это регулярное выражение –

4

Я установил регулярное выражение, которое a_horse_with_no_name уже предложили.

SELECT '12.41212' ~ '^\d+(.\d+)?$'; #true 
SELECT 'Service' ~ '^\d+(.\d+)?$'; #false 
Смежные вопросы