Oracle SQL LIKE运算符不能处理小于1的值

mrwjdhj3  于 2023-03-22  发布在  Oracle
关注(0)|答案(2)|浏览(186)

我尝试使用LIKE运算符,其列名包含的值小于1..例如:

  • -0.009123
  • 1.9504
  • 0.240921

LIKE语句返回任何大于0的值,例如1.95,但不返回任何以0或-0开头的值。
我的Oracle SQL看起来像这样:
SELECT * FROM planet WHERE location LIKE '0.240921%'不工作
SELECT * FROM planet WHERE location LIKE '1.9577821%'工程
Oracle中此列的数据类型为:NUMBER (15, 10)
为什么上面的语句不适用于以0开头的值,例如0.20012、-0.029115、0.25009等

rpppsulh

rpppsulh1#

location是一个数字,LIKE比较字符串,所以你实际上不是在比较location,你是在隐式地比较TO_CHAR(location)'0.240921%'
你可能会发现前面的0被省略了,需要用途:

SELECT * FROM planet WHERE location LIKE '.240921%'

或者将数字显式格式化为字符串:

SELECT *
FROM   planet
WHERE  TO_CHAR(location, 'fm99990.0000000000') LIKE '0.240921%'

或者,不要比较字符串:

SELECT *
FROM   planet
WHERE  location >= 0.240921
AND    location <  0.240922

fiddle

csga3l58

csga3l582#

您可以编写一个更直观的查询,将数字处理为数字。查找以0.240921开头的十进制数与查找[0.240921,0.240922)区间内的数字相同,因此:

SELECT *
FROM planet
WHERE location >= 0.240921 AND location < 0.240922

相关问题