【问题标题】:.NET C# mysql SUBSTRING gives me System.Byte[]?.NET C# mysql SUBSTRING 给了我 System.Byte []?
【发布时间】:2010-06-04 11:25:24
【问题描述】:

这个代码:

SELECT SUBSTRING(posted,1,4) as year FROM styles
reader = cmd1.ExecuteReader(CommandBehavior.CloseConnection);
reader.Read();
Response.Write(reader[0].ToString());

我只打印出字符串“System.Byte[]”。怎么会?

如果我使用 Mysql Query Browser 软件,我会从我的数据库中获取实际的字符串。

我知道 "Byte[]" 是一个数组列表,但是如何将其转换为纯字符串?

我数据库中的“已发布”字段包含类似“2010-04-04 13:23:00”的日期,我只想使用 SUBSTRING 获取年份。

【问题讨论】:

    标签: c# asp.net mysql substring


    【解决方案1】:

    正确的查询是

    SELECT DISTINCT SUBSTRING(CONVERT(varchar, posted, 111),1,4) as year FROM styles
    

    等于

    SELECT STR(YEAR(posted)) as year FROM styles-- YEAR returns int statement
    

    转换第一个参数,然后提取子字符串。 111 - 转换格式:http://www.mssqltips.com/tip.asp?tip=1145

    也试试

    reader["year"].ToString();
    

    只要你使用这个别名。

    【讨论】:

      【解决方案2】:

      您将需要使用 .GetString

      reader[0].GetString(0);
      

      此外,您可以使用 MySQL YEAR 函数从日期中提取年份。

      SELECT YEAR(date_field) FROM table
      

      【讨论】:

      • 非常好!谢谢你。 :) 但它不适用于“reader[0].GetString(0)”,我使用了“reader.GetString(0)”。 :) 但现在我也遇到了第二个问题......我需要用 DISTINCT 选择它,当我使用“SELECT DISTINCT SUBSTRING(posted,1,4) as year FROM styles”时,即使我的桌子有,我也什么也得不到其中有 10 行。
      • @theSwede - 如果您使用 YEAR() 函数而不是 SUBSTRING() 会发生什么?
      • 同样的事情。我将字符串作为“System.Byte []”得到,并且必须对其进行转换。但实际上我需要把它放在一个转发器和网络表单中我使用“" 来打印年份但是我如何运行 "GetString()"在那个代码上?
      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2019-05-25
      • 2013-12-21
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多