Oracle中的CHAR类型

Oracle中char(20)类型的数据,在通过参数对比的时候会需要在右边填充。见以下代码:

        string gzcode;
        string sqlStr = "SELECT GZCODE FROM TEST.TB_PUSER WHERE ID = :gzh";
        OracleCommand cmd = new OracleCommand(sqlStr);
        string t="00001";
        t=t.PadRight(20,' '); //在右边填充空格,使字符串长为20
        cmd.Parameters.AddWithValue(":gzh", t);
      
        using (OracleConnection conn = new OracleConnection(CDbop.DBConnectionString))
        {
            cmd.Connection = conn;
            conn.Open();
            gzcode = cmd.ExecuteOracleScalar().ToString();
        }

没有红色那一句的时候,检索不到数据。但有一点非常之“神奇”,如果把SQL语句直接写成sqlStr="SELECT GZCODE FROM TEST.TB_PUSER WHERE ID = '00001'";倒是可以正常检索出数据,猜测是VS查询中过滤掉了字段中的尾空格。但是,一旦使用参数,位数就必须确定。

原文地址:https://www.cnblogs.com/eugenewu0808/p/1202389.html