как ограничеть число знаков в SQL

yanus
На сайте с 21.01.2009
Offline
348
886

возникла проблема - у меня в некоторых полях таблицы SQL слишком длинные записи до 15-20тыс. символов. так как я обрабатываю данные из SQL сторонней программой, при слишком длинной записи она виснет.

учитывая специфику работы - меня интересует только первые 2-3 тыс знаков, остальное мусор, который можно выкинуть.

как это можно выполнить технически?

DI
На сайте с 03.01.2007
Offline
123
#1
Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
yanus
На сайте с 21.01.2009
Offline
348
#2

спасибо за ссылку, функция может быть основой скрипта, но с программированием я полный ноль. есть какие-либо готовые решения? или куда обратиться за написанием скрипта?

DI
На сайте с 03.01.2007
Offline
123
#3
yanus:
функция может быть основой скрипта, но с программированием я полный ноль. есть какие-либо готовые решения? или куда обратиться за написанием скрипта?

Вы вообще о чем?

yanus:
так как я обрабатываю данные из SQL

И как же Вы получаете данные для обработки? Вот там, где получаете - нужно поменять, грубо говоря, SELECT TextField на SELECT SUBSTRING(TextField,0,2000).

Ну или ставить более конкретно задачу, т.к. фраза "я обрабатываю" подразумевает, что человек в курсе, куда ставить эту функцию.

yanus
На сайте с 21.01.2009
Offline
348
#4

так, похоже лучше рассказать подробно, так как я действительно не в теме.

есть связка mysql+php. в mysql есть таблица, в строках которой,я хочу уменьшить количество символов.

нужно, чтобы создавлась "урезанная" копия в виде другой таблицы.

N
На сайте с 06.05.2007
Offline
419
#5

расскажите хоть что за программа.

если там можно настроить запрос - напишите прямо в ней запрос.

иначе попробуйте создать так называемое представление - view на основе запроса. для программы это будет выглядеть как таблица.

что-то типа такого оператора:

CREATE VIEW tab_trimmed AS

SELECT pole1,substring(pole2,1,3000),pole4,pole4

FROM tab ;

Возможно потребуется перечислить все остальные поля.

Кнопка вызова админа ()
yanus
На сайте с 21.01.2009
Offline
348
#6

с программой заморачиваться нет смысла, вроде есть решение, но че-то не получается сделать. какой в phpmyadmin sql запрос нужно задать, чтобы на основе существующей таблицы создать таблицу с урезанным контентом?

DI
На сайте с 03.01.2007
Offline
123
#7
yanus:
меня интересует только первые 2-3 тыс знаков, остальное мусор, который можно выкинуть

Зачем дублировать таблицы и хранить мусор?

Если это действительно ненужная информация - то

UPDATE Table SET Field=SUBSTRING(Field,1,3000)
yanus
На сайте с 21.01.2009
Offline
348
#8
INSERT INTO `base_new`.`table_new`
SELECT SUBSTRING('fulltext',1,300)
FROM `base_original`.`table_original` ;

пытаюсь копировать их одной базы в другую с "обрезанием". в новой пустые ячейки... где ошибка?

N
На сайте с 06.05.2007
Offline
419
#9

скорее всего полей не хватает.

сначала покажите show create table tab1; а потом ждите может кто напишет целиком и запрос или view

yanus
На сайте с 21.01.2009
Offline
348
#10

спсибо всем, заработало

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий