2010-06-04 70 views
1

此验证码:NET C#mysql SUBSTRING给我System.Byte []?

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

我只得到字符串 “System.Byte []” 打印出来。怎么来的?

如果我使用软件Mysql查询浏览器,我从我的数据库中得到实际的字符串。

我明白“Byte []”是一个数组列表,但是如何将它转换为纯字符串?

我的数据库中的“发布”字段包含日期,如“2010-04-04 13:23:00”,我想通过使用SUBSTRING只获得一年。

回答

0

正确的查询是

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 

首先参数被转换,比SUBSTRING萃取。 - 皈依格式:http://www.mssqltips.com/tip.asp?tip=1145

也可以尝试

reader["year"].ToString(); 

至于你使用这个别名。

0

您将需要使用.GetString

reader[0].GetString(0); 

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

SELECT YEAR(date_field) FROM table 
+0

非常好!谢谢。 :) 但它没有与“reader [0] .GetString(0)” 无效“我使用”reader.GetString(0)“。 :) 但现在我又遇到了第二个问题...我需要选择与DISTINCT这一点,当我使用“SELECT DISTINCT SUBSTRING(张贴,1,4)作为年样式”我甚至没有得到什么'我的表中有10行。 – midnightsyntax 2010-06-04 11:37:04

+0

@theSwede - 如果使用YEAR()函数而不是SUBSTRING()会发生什么? – 2010-06-04 11:47:31

+0

同样的事情。我将该字符串作为“System.Byte []”来获取,并且必须将其转换。 但实际上我需要把它放在一个中继器和webform im中使用“<%#DataBinder.Eval(Container.DataItem,”posted“)%>”来打印年份,但是如何运行“GetString( )“的代码? – midnightsyntax 2010-06-04 11:55:06