powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка и размер полей в таблице
19 сообщений из 19, страница 1 из 1
Выборка и размер полей в таблице
    #39066804
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В СУБД MySQL оператор выборки имеет следующий вид:
Код: sql
1.
SELECT f1,f2 FROM tab1 WHERE f3='x';


Если в указанном операторе в качестве поля f3 выбрать, например, символьное поле размера CHAR(6), то выдаётся корректный результат в виде полей f1 и f2, но если вместо данного поля взять символьное поле произвольной длины размера VARCHAR(200) или CHAR(200), то результат вообще перестаёт выдаваться. Пока при рассмотрении этой проблемы мне не удалось найти никакого описания ограничения размера или содержания поля f3. Буду признателен за любой совет по её решению.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066809
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну приведите скрипт, который мы сможем запустить и воспроизвести вышеописанное.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066818
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15,

Может быть, все проще - в поле f3 есть значение равное 'x', а в других полях нет?
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066853
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
   SQLQuery1.Close;
   SQLQuery1.SQL.Clear;
   SQLQuery1.SQL.Add('SELECT f1,f2 FROM tab1 WHERE f3='+''''+p+''''+';');
   SQLQuery1.Open;


Если в переменной p (как и в одном из полей f3) содержится значение 'str110' (CHAR(6)) - то всё работает, но если в неё поместить (как и в f3) значение 'stryktyra_instityta/fakyltetu/fakyltet_sistem_ypravleniya_letatelnuh_apparatov/rykovodstvo_fakylteta_i_sotrydniki_dekanata' (VARCHAR(200)/CHAR(200)) - то ничего не работает.
В таблице поле f3 содержит уникальные символьные значения, из которой по приведенному запросу выбираются соответствующие им значения полей f1 и f2.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066870
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15,

Так в итоге поле f3 какого типа?
И что означает формулировка "ничего не работает" ?
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066917
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. При использовании поля f3 как типа VARCHAR(200), так и типа CHAR(200) результат получается аналогичный - отрицательный.
2. Отрицательный результат (ничего не работает) - в результате работы приведенных ниже операторов выдаются пустые строки p1 и p2:
Код: pascal
1.
2.
p1:=SQLQuery1.FieldByName('f1').AsString;
p2:=SQLQuery1.FieldByName('f2').AsString;
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066927
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15,

Что означает "использование поля как типа VARCHAR(200)" ? Поле нельзя "использовать как", оно имеет определенный тип, указанный при создании таблицы. И именно указать этот тип я прошу. А "использовать как" другой тип - такого не бывает.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066969
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15,

А покажите значение SQLQuery1.SQL.Text (или где там текст запроса хранится) в рабочем и нерабочем вариантах.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066974
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тип поля f3 был преобразован с помощью оператора ALTER TABLE со значением MODIFY. На мой взгляд, тип VARCHAR больше соответствует содержанию поля f3, хотя разница между ними, насколько я понимаю, затрагивает лишь объём выделяемой памяти.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39066978
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15Тип поля f3 был преобразован с помощью оператора ALTER TABLE со значением MODIFY. На мой взгляд, тип VARCHAR больше соответствует содержанию поля f3, хотя разница между ними, насколько я понимаю, затрагивает лишь объём выделяемой памяти.Тогда, похоже, моя изначальная гипотеза была верной - того значения, которого найти не удается, просто нет в таблице.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067000
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Текст запроса SELECT везде одинаков и соответствует приведенному, без вариантов. Разница состоит лишь в содержании поля f3 таблицы - в одном случае запрос работает с ним как с CHAR(6), в другом - как с VARCHAR(200). Примеры содержания поля f3 в обоих вариантах указаны выше.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067021
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15Текст запроса SELECT везде одинаков и соответствует приведенному, без вариантов.Ну, привели вы не текст запроса, а код, его собирающий. Но опустим это и поверим, что он действительно один и тот же. Тогда единственное объяснение - 18225665
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067080
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо всем за ответы. Действительно, ваша гипотеза подтвердилась - оператор SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067091
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15оператор SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.Это какие-то суровые сказки... trim делать не пробовали?
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067096
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.Размеры значений должны совпадать, а не размеры поля и переменной.
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067119
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15,

используем метод "научного тыка":

1. а покажите что у вас выдаст запрос (будет ли что-то в рез-те)
руками пропишите без переменных
SELECT f1,f2, f3 FROM tab1 WHERE f3 LIKE "stryktyra_instityta%" LIMIT 5;

и потом "ручками" подсуньте одно из значений f3 в
SELECT f1,f2, f3 FROM tab1 WHERE f3="";
SQLQuery1.SQL..... = SELECT f1,f2, f3 FROM tab1 WHERE f3=""; -- руками пропишите точное значение из п.1
может здесь замешан прямой "слэш".......
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067126
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovможет здесь замешан прямой "слэш".......Прямой, по идее, не должен. Обычно обратный "вредит".
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067160
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда что-то там не то с "конкатенацией" ...
...
Рейтинг: 0 / 0
Выборка и размер полей в таблице
    #39067561
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последовательность действий при реализации порекомендованного метода:
1. Создание новой таблицы с аналогичной структурой и единственной записью, при этом длина поля для неё в точности соответствует её длине. Проверка функционирования - всё нормально работает.
2. Копирование этой записи в новую таблицу, где длина поля для неё превышает её длину (равна 200). Проверка функционирования - всё продолжает нормально работать.
3. Дополнение таблицы всеми остальными записями разной длины. Проверка функционирования - всё также продолжает нормально работать.
В результате указанных действий цель оказалась достигнутой - была создана функционирующая таблица, структурно ничем не отличающаяся от первоначальной неработающей. А вот как рационально объяснить, почему не работает исходная таблица, даже после ряда обновлений - мне по-прежнему непонятно. Скорее всего, здесь присутствует какой-то системный недочёт.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка и размер полей в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]