背景

  • 表dbcontinfo

    • 字段loanid,类型为varchar2(60)
  • 表dbloanbal
    • 字段loanid,类型为char(60)
  • loanid字段实际长度为24位

问题

  • 两张表dbloanbal和dbcontinfo进行left关联查询,从表的数据查询不出来,值为null,sql如下

    • select  n.listid,n.loanacno,n.loanid,w.bailorname from dxLoanBal n  left join dbcontinfo w on w.loanid=n.loanid;
    • 查询出来的 bailorname 字段值为null

原因

  • 在oracle数据库中,varchar2()的长度是可以随着存入字段的长度改变,而char()是固定的,不足的使用空格替代。
  • 在dbloanbal中loanid字段存在空格,导致关联条件失效。

解决问题

  • 使用trim()函数去掉空格之后查询:select  n.listid,n.loanacno,n.loanid,w.bailorname from dxLoanBal n  left join dbcontinfo w on w.loanid=trim(n.loanid);

扩展:oracle中varchar2()和char()的区别

  • varchar2()

    • 长度是可变的。设置的是varchar(60),但是当存储进入的字符串长度为24,实际存储的长度为24。如果还有长度为25的字段存入,这时这个字段的长度为25,而长度为24的那个字段依旧为24。字段读取效率没有char()高。
  • char()
    • 长度固定。设置的是char(60),但是当存储进入的字符串长度为24,实际存储的长度为60,其中有36个空格。但是因为长度不变,数据库读取效率高。

Oracle使用——varchar2() 和 char()关联查询 存在空格的更多相关文章

  1. Oracle SQL——varchar2() 和 char()关联查询 存在空格

    背景 表dbcontinfo 字段loanid,类型为varchar2(60) 表dbloanbal 字段loanid,类型为char(60) loanid字段实际长度为24位 问题 两张表dbloa ...

  2. Oracle 数据库(oracle Database)Select 多表关联查询方式

    Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...

  3. oracle库两个表关联查询时用 count 报错【我】

    oracle数据库,需要对两个表进行关联查询(根据两个字段),结果发现关联后不能改为 count 获取数量,报错如下: 同样的sql换到另外一个数据库就可以(只是因为数据量在千万级,所以很慢,用时40 ...

  4. oracle之VARCHAR2(50 CHAR) 和VARCHAR2(50) 区别?

      首先要明白的是:根据字符集不同,varchar2(50)这样在gbk可存25个汉字,utf8可存16个汉字 这里的50相当于50BYTE,是按字节计数,50CHAR是按字符计数. 对于多字节字符( ...

  5. 多表关联查询(ORACLE版)

    前言:这几天学习oracle,把自己对于关联查询的理解,记录下.如有错误请指正! 交叉连接: 交欢连接又称为“笛卡儿积连接”,是两个或多个表之间的无条件连接.一个表中所有的记录与其它表的所有的记录进行 ...

  6. oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create table student1 ( sid ), sname ), sage )); Table created ...

  7. oracle 三表关联查询

      oracle 三表关联查询 CreationTime--2018年7月4日17点52分 Author:Marydon 左连接实现三表关联 表A--------------------------- ...

  8. oracle 两表关联查询

      oracle 两表关联查询 CreationTime--2018年7月4日17点27分 Author:Marydon 情景描述 查询学生表student,sname,sex,age信息及所在班级c ...

  9. Oracle关联查询-数据类型不一致问题 ORA-01722: 无效数字

    一.存在表A和表B,都包含字段user_no,但数据类型不一致,如下: create table A ( user_id varchar2(20), user_no number(12,0), xxx ...

随机推荐

  1. NKOJ1472 警卫安排

    P1472警卫安排   时间限制 : 10000 MS   空间限制 : 65536 KB 问题描述 一个重要的基地被分为n个连通的区域.出于某种神秘的原因,这些区域以一个区域为核心,呈一颗树形分布. ...

  2. Node.js的框架-express

    Node.js的框架 express 是第三方的 express const express=require('express'); const app=express(); const PORT=3 ...

  3. 几种支持REST的Java框架

    目前宣称支持REST的Java框架包括以下这些: Restlet(http://www.restlet.org/) Cetia4(https://cetia4.dev.java.net/) Apach ...

  4. 学习JDK1.8集合源码之--HashSet

    1. HashSet简介 HashSet是一个不可重复的无序集合,底层由HashMap实现存储,故HashSet是非线程安全的,由于HashSet使用HashMap的Key来存储元素,而HashMap ...

  5. 2018-12-25-Roslyn-如何使用-MSBuild-Copy-复制文件

    title author date CreateTime categories Roslyn 如何使用 MSBuild Copy 复制文件 lindexi 2018-12-25 9:35:8 +080 ...

  6. SDUT-3402_数据结构实验之排序五:归并求逆序数

    数据结构实验之排序五:归并求逆序数 Time Limit: 50 ms Memory Limit: 65536 KiB Problem Description 对于数列a1,a2,a3-中的任意两个数 ...

  7. Linux 内存管理之mmap详解

    找了好多,最后发现下面这篇时讲的比较通俗易懂的. Linux内存管理之mmap详解-heavent2010-ChinaUnix博客 http://blog.chinaunix.net/uid-2666 ...

  8. PHP来控制Linux,ssh2来控制服务器端

    注意:我们用PHP来控制Linux,php环境可以在windows也可以在linux,但是我们要控制的机器是一台linux(被控制的linux关闭selinux和firewalld). 如果php在l ...

  9. Android RecycleView添加HeaderView宽度不能撑满屏幕问题

    下午做项目的时候,碰到页面布局需要使用RecycleView加HeaderView,本以为很简单东西,却有一个小小的坑:HeaderView布局的宽度不能撑满屏幕! 先看下出现问题的图: 天了噜,我写 ...

  10. python 正则表达式匹配过程