2013-11-14 102 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 
相关问题