Oracle SQL Regex美元符号不能确定字符串的结尾

时间:2020-11-06 09:09:00

标签: regex oracle

我想从 my_prices 中获取所有已插入但有错误的价格。例如,格式为 150.00 -一个或多个数字,后跟一个点,后跟两个数字。所有价格都应遵循这种模式。

这是SQL正则表达式,我正试图用它获取与上述模式不匹配的价格:

REGEXP_LIKE(my_prices, '^[0-9]{1,6}\.[0-9]{2}')

因此,它以最小1位和最大6位数字开头,后跟一个点,然后是2位数字。问题在于它无法获取点后一位或三位数字的价格,例如 134.000 < / strong>或 23.0 。当我用美元符号确定字符串的结尾时(因此字符串必须以2位数字结尾)

REGEXP_LIKE(my_prices, '^[0-9]{1,6}\.[0-9]{2}$')

结果,我从 my_prices 中获得了所有价格,有无错误。

为什么会这样?为什么此美元符号不能确定字符串必须以2位数字结尾,因此我可以得到结尾没有2位数字的价格,例如 121.2 23.001 ,等等?

这是查询:

SELECT my_prices FROM table
WHERE NOT REGEXP_LIKE(my_prices, '^[0-9]{1,6}\.[0-9]{2}$')
AND my_column IS NOT NULL

0 个答案:

没有答案