我想从 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