【问题标题】:How to enter first 100 character of 200 in mysql如何在mysql中输入200的前100个字符
【发布时间】:2011-05-05 08:03:12
【问题描述】:

我在 mysql 中有一个带有 varchar(100) 的字段,我想存储前 100 个字符,因为我的数据长度是 200 个字符(忽略最后 100 个字符)。我不想更改我的源代码。这在 MS-Access 和 MS Server 中是可能的,但我想在 mysql 中执行此操作。

我在 java 中使用 hibernate 应用它,这意味着我没有为此编写插入代码。这里我只是使用 save() 方法及其抛出的“大数据”。

我有异常-

原因:java.sql.BatchUpdateException:数据截断:第 1 行的列“FBUrl”的数据太长 at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1527) at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1065) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195) glb.chatmeter.exception.AdException: Could not Save Facebook page Data.

【问题讨论】:

  • 你试过什么?当您运行INSERT INTO table (field) VALUES (stringLongerThan100Chars) 时发生了什么,其中fieldVARCHAR(100)
  • 您想要纯 SQL 还是您使用的编程语言?
  • @jensgram 通常会起作用;但是,如果 mySQL 处于严格模式,则会导致错误。
  • @Pekka,你是对的:“如果未启用严格的 SQL 模式,并且您为超过列的最大长度的 CHAR 或 VARCHAR 列分配值,则该值将被截断以适应和产生警告”(source)

标签: java mysql hibernate


【解决方案1】:

注意:在下面的一个小时后,对问题进行了编辑,并进行了实质性的更改。此答案按原样回答了问题,但未解决已编辑的版本。


你可以使用substring:

INSERT INTO MyTable (Myfield) values (SUBSTRING('long string', 1, 100))

pos 参数从1 开始(奇怪),如果len 参数大于您实际插入的长度,也没关系。

【讨论】:

  • MySQL SUBSTRING() 指定字符串从位置 1 开始,而不是大多数编程语言中的 0。
【解决方案2】:

您可以使用SUBSTRING() 修剪插入:

INSERT INTO table (column) VALUES (SUBSTRING("your data...", 1, 100))

【讨论】:

    【解决方案3】:

    试试这个

    SELECT INSERT('your string', 0, 100, '');
    

    REFERENCE

    【讨论】:

      【解决方案4】:

      不更改源代码的唯一方法是修改 MySQL 服务器的配置。更具体地说,sql_mode 变量:

      相信你一定要设置STRICT_TRANS_TABLES:

      对于 STRICT_TRANS_TABLES,MySQL 将无效值转换为 列的最接近有效值和 插入调整后的值。如果一个值 缺失,MySQL 插入隐式 列数据的默认值 类型。无论哪种情况,MySQL 都会生成 警告而不是错误 继续处理该语句。 隐式默认值在 第 10.1.4 节,“数据类型默认值” 价值观”。

      但是,请务必注意,此设置会影响许多其他事情。我认为不更改源代码的唯一原因是您无权访问它,在这种情况下,您可能只需扩大 DB 列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-30
        • 2017-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        • 2012-02-10
        • 2012-06-15
        相关资源
        最近更新 更多