首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql查询结果中的字符数

sql查询结果中的字符数
EN

Stack Overflow用户
提问于 2014-01-15 14:28:15
回答 1查看 86关注 0票数 0

我使用Spring3.1.1和Hibernate 4以及MSSQL数据库。最后,我能够使用返回正确答案的表中的联接查询我的数据库。虽然,它似乎不返回整个字符串的我的消息,但削减到29/30位数。以下是我的疑问:

代码语言:javascript
复制
SQLQuery sql = this.getCurrentSession().createSQLQuery(
            "SELECT event.id as eventid, CAST(event_type.type_name AS varchar) as eventtype, event.check_date, event.event_date, event.status, CAST(event_message.message AS varchar) as eventmessage " + 
            "FROM event_log event " +
            "LEFT JOIN event_type " + 
            "ON (event.event_type_id = event_type.id) " + 
            "LEFT JOIN event_message " +
            "ON (event.event_message_id = event_message.id) " + 
            "WHERE event.event_type_id = " + jobId + 
            "ORDER BY eventid");

其结果可以是:

代码语言:javascript
复制
4506 Database 2014-01-15 14:14:15.02 2014-01-15 14:14:15.02 false Database-connection cannot be

其中列是id、task_name、check_date、event_date、status和末尾的消息字符串。。

结果转到一个ArrayList<Object[]>,在那里我读取row[0]等来获取行中的实体。字符串消息在29位后被剪切,这是令人不安的。为什么它要剪断绳子,我怎么才能解决这个问题?在我的数据库中,字符串存在于它的“满”中,并命名为“最多400个字符”。

我知道这可能不是查询我的数据库的最好方法,但是它可以用于我的应用程序,因为它可以工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-15 14:31:24

您使用的是没有长度的varchar。千万别这么做!

取代:

代码语言:javascript
复制
CAST(event_type.type_name AS varchar)

有这样的东西:

代码语言:javascript
复制
CAST(event_type.type_name AS varchar(255))

在某些情况下,默认长度为32。在某些情况下,它是1。但是,在一般情况下,总是指定长度。

编辑:

实际上,你可能根本不需要cast。为什么event_type.type_name不在select列表中呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21140037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档