我正在尝试将 LIKE 运算符与包含小于 1 的值的列名一起使用。例如:
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 等
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)
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |