Oracle SQL LIKE 运算符不适用于小于 1 的值

Csh*_*ent 1 sql oracle

我正在尝试将 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 等

MT0*_*MT0 5

location是一个数字并LIKE比较字符串,因此您实际上并不是在比较,而是location隐式与 进行TO_CHAR(location)比较'0.240921%'

您可能会发现前导0被省略,需要使用:

SELECT * FROM planet WHERE location LIKE '.240921%'
Run Code Online (Sandbox Code Playgroud)

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

SELECT *
FROM   planet
WHERE  TO_CHAR(location, 'fm99990.0000000000') LIKE '0.240921%'
Run Code Online (Sandbox Code Playgroud)

或者,不要比较字符串:

SELECT *
FROM   planet
WHERE  location >= 0.240921
AND    location <  0.240922
Run Code Online (Sandbox Code Playgroud)

小提琴