猿问
下载APP

请问在Oracle SQL中的!=与<>?

Oracle SQL中的!=与<>


呼唤远方
浏览 66回答 4
4回答

拉风的咖菲猫

一个问题:这两个都是不等于符号,没有什么区别,如果这个字段有索引,都可以使用的。第二个问题:in 和 not in 都可以使用索引的,但是如果name字段有很多值,那么not in的执行时间应该稍微长一点,因为它返回的值比较多。补充:如果name的值比较少的话,in和not in条件严密性差不多,如果name值比较多的时候,in的严密性更高,索引都是按照顺序排好的,相等的情况只有一种,不等的情况有很多种。如果你('a', 'b')这些值是放在另外一个表里面,还有not exsits可以替换,如果是常量的话,貌似也只能这么写了。

FFIVE

Oracle与Sql server都遵循SQL-92标准:区别如下:1.Oracle中表名,字段名,存储过程名,变量名不能超过30个字符串长度。2.Oracle中不支持Top 语法。使用whererownum < n 代替。但需要注意如果在Top前有排序的操作,则需要先排序在利用rownum取得。3.Oracle中光标的使用与SqlServer中有挺大差别,主要是在循环控制方面不一致。在Oracle中如果某列是Date类型,那么它默认的格式是yyyy-MM-dd,如果使用where colDate = ‘2005-06-08 17:14:57’就会出错,‘2005-06-08’可以。如果此时需要精确比较时间(小时,分,秒),可以采用下列方法:TO_DATE('2005-6-8 17:14:57','yyyy-mm-dd hh24:mi:ss')。由于Oracle和SQLServer在DateTime上对SQL标准的拓展实现方式不同,因此不能用同一个SQL实现。4.Oracle中的TimeStamp(时间戳)与SqlServer中的差别很大。SqlServer中的TimeStamp是二进制格式存储在数据库中,可以将DataSet中的这个字段类型设定为base64Binary类型。Oracle中的TimeStamp是时间格式存储的。因此,无法用同一个DataSet既装载SqlServer的TimeStamp,有装载Oracle的TimeStamp.由于在应用程序中很少用到这个值,因此可以不检索这个字段。5.Oracle中的TimeStamp不能像SqlServer在传入数据的时候自动填充,可以设定默认值systimestamp来实现类似功能。6.Oracle中没有Boolean的字段类型,可以用intger或者char代替SqlServer中的bit类型。7.Oracle中会将””空字符串当多NULL处理,也就是说,当应用程序往数据库中插入一个空字符串时,实际数据库会尝试插入一个NULL。如果这个字段是NOTNULL类型,那么就会出错,这种情况下可以用别的默认值代替空字符串。当从SqlServer导入数据到Oracle的时候,在NOTNULL列上的空字符串会导致导出操作失败。此时可以在导出向导中手工修改SQL脚本,将空字符串设定成一个特殊值。8.Oracle中不支持,SELECT . . INTO创建新表,要用CREATE TABLE 表名AS SELECT 语句 ,创建新表。9.在Oracle中连接字符串用 ‘||’ 或CONCAT(COL1,COL2)函数,不能使用‘+’。统配符 [],[^] ,Oracle好像也不支持。

达令说

SQL语句本身就是一种工业标准,多数的SQL语句是通用的(SELECT,UPDATE,INSERT) 但是当中还有一些小的区别,比如ORALCE9以后支持的全外连写法 FULLOUTER JOIN ON,一旦应用到PL/SQL(带编程语句的SQL)区别就大了.因此数据库无关性(程序在所有的数据库都能顺利运行)也是编程的一个课题.你说的DESC用法是ORALCE特有数据字典用法.不是标准的SQL语句

开满天机

我怎么记得oracle只能用<>呢。如果能用,应该是没有区别。不管怎样,“不等于”判断是不能用索引的。道理很简单:索引即使穿上了“树”这个马甲,其本质上还是对排序数据的二分查找。“不等于”判断无法确定数据顺序,也就无法使用二分查找算法。所以就无法使用索引了。其他不能使用索引的情况也是这个道理。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答