我尝试使用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等
2条答案
按热度按时间rpppsulh1#
location
是一个数字,LIKE
比较字符串,所以你实际上不是在比较location
,你是在隐式地比较TO_CHAR(location)
和'0.240921%'
。你可能会发现前面的
0
被省略了,需要用途:或者将数字显式格式化为字符串:
或者,不要比较字符串:
fiddle
csga3l582#
您可以编写一个更直观的查询,将数字处理为数字。查找以
0.240921
开头的十进制数与查找[0.240921,0.240922)区间内的数字相同,因此: