2010-01-10 48 views
1

如何从下列查询得到有效的价值查询处理有效的数值

SELECT Answer FROM table 
WHERE values LIKE '%[^0-9]%' 

基本上我想要的数据可以处理为

  1. 28000(有效)
  2. $ 20000(有效)
  3. 年金额(无效)
  4. ? (无效)
  5. 28.00(有效)

感谢

+1

'values'列的类型是char/varchar是吗?如果是这样,这更像是一个正则表达式问题。 – 2010-01-10 01:22:15

+2

我认为你必须更精确一点,以确定你的意思是有效和无效。您是否正在寻找可以解释为美国格式的无单位十进制值的东西,或者是美元格式的美元金额,而没有额外的文本? – 2010-01-10 01:25:52

回答

1
SELECT Answer 
FROM table 
WHERE 
    ISNUMERIC(values) 
    OR (
     SUBSTRING(values, 1, 1) = '$' 
     AND ISNUMERIC(RIGHT(values, LEN(values) - 1))) 
1

,你可以这样做:

select replace(replace(values, '$', ''), ',', '') as number from table 
    where dbo.RegexMatch(values, ^\$?(\d+|(\d{1,3}(,\d{3})+))(\.\d+)?$') 

调整正则表达式匹配任何你需要的条件...