如何确定SQL中的字符串是否为数字?

And*_*eek 13 sql numeric oracle10g

在Oracle 10g的SQL查询中,我需要确定字符串是否为数字.我怎样才能做到这一点?

Cha*_*ndu 27

您可以使用REGEXP_LIKE:

SELECT 1 FROM DUAL
WHERE REGEXP_LIKE('23.9', '^\d+(\.\d+)?$', '') 
Run Code Online (Sandbox Code Playgroud)

  • @cybernate:不是i18n/l10n安全 - 逗号和句号. (4认同)

Adr*_*iro 5

你试试这个:

SELECT LENGTH(TRIM(TRANSLATE(string1, ' +-.0123456789', ' '))) FROM DUAL
Run Code Online (Sandbox Code Playgroud)

其中string1是您正在评估的内容.如果是数字,它将返回null.请在此处进一步说明

  • 请注意,这会将"123 + 45"或"123.45.67.89"这样的字符串视为有效数字. (6认同)