美文网首页
ORACLE单表查询

ORACLE单表查询

作者: 奶茶007 | 来源:发表于2020-02-24 08:14 被阅读0次

    1,查看表结构
    SQL> desc temp

    2, 查找空值
    SQL> SELECT * FROM TEMP WHERE COMM = NULL;

    表TEMP 中有列COMM 为空的,但是通过该语句查询却没有查到,问题在哪里?
    实际上,NULL是不能用 “=” 运算符,要用IS NULL判断
    正确写法:
    SQL> SELECT * FROM TEMP WHERE COMM IS NULL;
    NULL不支持加,减,乘,除,大小比较,相等比较,否则只能结果为空。
    至于其他函数遇到NULL最好测试一下结果会受什么影响,而不是仅凭经验或者臆测。

    3,将空值转换为实际值
    SELECT COALESCE(列1,列2,列3,列4) as val_end FROM TEMP;
    返回多个值中第一个不为空的值,相对于nvl ,coalesce支持多个参数,可以很方便返回第一个不为空的值,如果上面语句改为nvl,就要嵌套很多层
    SELECT nvl(nvl(nvl(列1,列2),列3),列4) as val_end FROM TEMP;

    4,LIKE _替代一个或多个字符
    SQL> SELECT * FROM A WHERE NAME LIKE '_B%';
    NAME
    AB
    BC
    在这里"
    "被当做通配符了,可以转义字符
    SQL> SELECT * FROM A WHERE NAME LIKE '_B%' ESCAPE '';
    _BC

    5,转义字符作为like里的需要匹配的内容
    SQL> SELECT * FROM A WHERE NAME LIKE '_\B%' ESCAPE '';
    _\BC

    4,5,6点不知道是不是因为数据库版本的问题,在oracle 11g 11.2.0.4.0测试中,“_”,,"","\"并没有作为通配符二十作为一个简单的字符。以上仅供在作为通配符的情况下使用。

    相关文章

      网友评论

          本文标题:ORACLE单表查询

          本文链接:https://www.haomeiwen.com/subject/fbojqhtx.html