首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >截断字符串

问截断字符串
EN

Stack Overflow用户
提问于 2010-09-02 03:50:07
回答 1查看 2.3K关注 0票数 0

我正在使用第三方用户数据,这些数据可能适合也可能不适合我们的数据库。如果数据太长,则需要截断。

我们正在使用带有连接器/J的IBatis。如果数据太长,将抛出SQL异常。我有两个选择:要么截断Java中的字符串,要么使用substring截断sql中的字符串。

我不喜欢截断sql中的字符串,因为我是在Ibatis XML中编写表结构,但是SQL另一方面知道我们的数据库排序规则(这是不一致的,保持一致的代价很高),并且可以以多字节安全的方式截断字符串。

有没有办法让Connector/J直接插入这个SQL,如果没有,人们会推荐哪条路线?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-02 04:19:36

根据the MySQL documentation的说法,插入超过长度的数据可能会被视为警告:

将字符串插入超过列最大长度的字符串列(CHAR、VARCHAR、TEXT或BLOB)。该值被截断为列的最大长度。

连接器/J属性之一是jdbcCompliantTruncation。这是its description

此选项设置当数据被截断时连接器/J是否应抛出java.sql.DataTruncation异常。当连接到支持警告的服务器(MySQL 4.1.0和更高版本)时,这是JDBC规范所要求的。如果服务器sql-mode包含STRICT_TRANS_TABLES,则此属性不起作用。请注意,如果未设置STRICT_TRANS_TABLES,则它将作为使用此连接字符串选项的结果进行设置。

如果我理解正确的话,那么将这个属性设置为false并不会抛出异常,而是插入截断的数据。此解决方案不需要截断程序代码或SQL语句中的数据,而是将其委托给数据库。

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

https://stackoverflow.com/questions/3621627

复制
相关文章

相似问题

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