Как ввести первые 100 символов из 200 в mysql - PullRequest
3 голосов
/ 05 мая 2011

У меня есть поле с varchar (100) в mysql, я хочу сохранить первые 100 символов, потому что моя длина данных составляет 200 символов (игнорировать последние 100 символов). Я не хочу менять свой исходный код. Что возможно в MS-Access и MS Server, но я хочу сделать это в MySQL.

Я применяю это в Java с Hibernate, значит, я не пишу код для вставки для этого. Здесь я просто использую метод save () и выбрасываю его «Большие данные».

У меня есть исключение-

Причина: java.sql.BatchUpdateException: усечение данных: слишком длинные данные для столбца 'FBUrl' в строке 1 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.

Ответы [ 4 ]

6 голосов
/ 05 мая 2011

Примечание : через час после этого вопрос был отредактирован с изменением существенное .Этот ответ ответил на вопрос так, как он был изначально, но не относится к отредактированной версии.


Вы можете использовать substring:

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

Параметр pos начинается с 1 (как ни странно), и все в порядке, если параметр len больше длины того, что вы фактически вставляете.

2 голосов
/ 05 мая 2011

Вы можете использовать SUBSTRING() для обрезки вставок:

INSERT INTO table (column) VALUES (SUBSTRING("your data...", 1, 100))
1 голос
/ 05 мая 2011

попробуйте

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

ССЫЛКА

0 голосов
/ 05 мая 2011

Единственный способ сделать это без изменения исходного кода - поиграться с конфигурацией сервера MySQL.В частности, переменная sql_mode:

Я полагаю, вы должны установить STRICT_TRANS_TABLES:

ДляSTRICT_TRANS_TABLES, MySQL преобразует недопустимое значение в ближайшее действительное значение для столбца и вставляет скорректированное значение.Если значение отсутствует, MySQL вставляет неявное значение по умолчанию для типа данных столбца.В любом случае MySQL генерирует предупреждение, а не ошибку, и продолжает обрабатывать оператор.Неявные значения по умолчанию описаны в разделе 10.1.4, «Значения по умолчанию для типа данных».

Однако важно отметить, что этот параметр повлияет на многие другие вещи.Единственная причина, по которой я не изменяю исходный код, заключается в том, что у вас нет к нему доступа, и в таком случае вы, вероятно, можете просто увеличить столбец БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...