我正在尝试检查a是否string
仅包含以下格式的有效数字
123.456
123
.356
但是它应该拒绝任何包含非数字(包括双点)的内容。这是一些无效的格式
d123.456
123d
12d3
d.1256
12d.456
12.d12
12.d45d
12.45.56
我做了以下
SELECT CASE WHEN '123.00' NOT LIKE '%[^0-9.]%' THEN 'Valid' ELSE 'Invalid' END
除了字符串中不止一个点的情况外,似乎还可以工作。
如何调整正则表达式以仅允许一个点,否则返回“无效”?
我建议try_convert()
:
select (case when try_convert(col, float) is not null then 'valid' else 'invalid' end)
可能的缺点是指数格式。1e6
例如是一个有效数字。
另一种方法是该where
方法。您只需要更完整的逻辑即可:
select (case when col like '%[^0-9.]%' then 'invalid'
when col like '%.%.%' then 'invalid'
else 'valid'
end)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句