代码之家  ›  专栏  ›  技术社区  ›  Vinnie Novido

SQL查询返回“值太长”

  •  -1
  • Vinnie Novido  · 技术社区  · 8 年前

    我有一个SQL查询,它应该填充内存中的数据表,但我得到一个错误,即“Value‘我的值的开头’太长。”

    该查询在SQL编辑器中工作,但在我用C#以编程方式运行它时不会工作。计算它出现的值时,最长约38个字符,最短9个字符。这并不是很多让我困惑的问题是什么?SQL查询是在子查询的帮助下,基于来自其他数据库表的数据创建一个动态表。

    该错误返回一个数字( SQL0433N and SQLSTATE=22001 )这让我想到了这一点 explanation page.

    然而,这并不能直接帮助我解决问题。

    一些示例代码,其中 ImportSQLTable() 保存SQL查询字符串。

     OdbcDataAdapter da = new OdbcDataAdapter(ImportSQLTable(ID), DbConnection);
     DataTable dt = new DataTable();
    
     da.Fill(dt); // Fill the table with data from the query
    

    使用。NET Framework 4.6.1

    1 回复  |  直到 8 年前
        1
  •  1
  •   Vinnie Novido    8 年前

    我通过将显示错误的列转换为一种长度让我感到舒服的数据类型来解决这个问题。

    SELECT CAST(MyColumn as varchar(100)) as MyNewColumn
    

    编辑:另一种方法,或者如果这不像我所经历的那样有效,则在将字符串存储在C#中时使用@“”。看起来像这样:

    public string mySQLString()
    {
        return @"
                 SELECT col1, col2, col3
                 FROM MyDatabase
                 WHERE col1 = 'mytext'
                ";
    }
    

    我不知道确切的原因,但通过更改此值,过长值的错误消失了!