字符串当作数值进行比较

简介: 1. 今天在做项目时,发现从数据库中取出的结果总与预期的不一样,最后发现有人把一条sql把字符串当作数值进行比较大小,模拟如下:创建表:SQL> create table t(t1 n...

1. 今天在做项目时,发现从数据库中取出的结果总与预期的不一样,最后发现有人把一条sql把字符串当作数值进行比较大小,模拟如下:


创建表:

SQL> create table t(t1 number(3),t2 varchar2(3));

插入数据:

SQL> insert into t values(1,'1');


SQL> insert into t values(2,'5');


SQL> insert into t values(3,'11');


SQL> insert into t values(4,'15');


SQL> insert into t values(5,'111');


SQL> insert into t values(6,'155');


测试:

SQL> select * from t where t2>16;


        T1 T2
---------- ---
         5 111
         6 155



SQL> select * from t where t2>'16';


        T1 T2
---------- ---
         2 5

注意,当把字符串当做数值进行比较时,返回两行数据,而直接进行字符串比较则只返回一行数据,而且两条sql所返回的数据是不一样的,

Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,所以上述两条sql是完全不相等,在以后的开发中,

一定要正确设定列的数据类型,不能让oracle进行隐式类型转换,不然结果与你想要的相差甚远。


目录
相关文章
|
4月前
|
C语言
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
这篇文章展示了如何使用栈(包括顺序栈和链栈)实现将十进制数值转换成八进制数值的方法,通过C语言编程演示了两种栈的实现方式和使用场景。
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
|
5月前
|
JavaScript
JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
|
7月前
|
索引 容器
06-数据容器str(字符串)-字符串的下标索引/字符串无法修改/查找字符串下标初始值/字符串的替换/字符串的分割/字符串去除前后空格/统计字符串的数量/字符串的循环遍历/对字符串进行分割
06-数据容器str(字符串)-字符串的下标索引/字符串无法修改/查找字符串下标初始值/字符串的替换/字符串的分割/字符串去除前后空格/统计字符串的数量/字符串的循环遍历/对字符串进行分割
|
7月前
字符串,每个里面包含0-N个数字,如3,8,2,编写函数,将两个这样的字符串合并,并且输出的字符串里面没有重复的数字,并从大到小排列.
字符串,每个里面包含0-N个数字,如3,8,2,编写函数,将两个这样的字符串合并,并且输出的字符串里面没有重复的数字,并从大到小排列.
40 0
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
109 0
|
自然语言处理 C语言 C++
输入两个整数,求它们按由从大到小的顺序输出。要求使用变量的引用。
输入两个整数,求它们按由从大到小的顺序输出。要求使用变量的引用。
|
C语言
接受一个整型值,按照顺序打印他的每一位(函数,递归方法)
接受一个整型值,按照顺序打印他的每一位(函数,递归方法)
213 0
接受一个整型值,按照顺序打印他的每一位(函数,递归方法)
C#中字符串是否可以转换为数值
C#中字符串是否可以转换为数值
|
测试技术
字符串中有多少个不重复的字符并按由前到后的顺序输出一个新的字符串和该字符串长度的整数
字符串中有多少个不重复的字符并按由前到后的顺序输出一个新的字符串和该字符串长度的整数
96 0
|
JavaScript 前端开发
数值、字符串、数组的相互转换
今天是我第一天刷力扣,我就想着通过刷题来巩固一下之间学习过的知识。 然后有一道题就需要将数字转换为字符串,然后倒转,比较是否相等。 这里我就想把之前学习到数字、字符串、数组的相互转换方法总结一下。