Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка и размер полей в таблице / 19 сообщений из 19, страница 1 из 1
02.10.2015, 10:49:04
    #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
02.10.2015, 10:51:29
    #39066809
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
Ну приведите скрипт, который мы сможем запустить и воспроизвести вышеописанное.
...
Рейтинг: 0 / 0
02.10.2015, 10:57:03
    #39066818
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
vadval15,

Может быть, все проще - в поле f3 есть значение равное 'x', а в других полях нет?
...
Рейтинг: 0 / 0
02.10.2015, 11:23:39
    #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
02.10.2015, 11:33:55
    #39066870
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
vadval15,

Так в итоге поле f3 какого типа?
И что означает формулировка "ничего не работает" ?
...
Рейтинг: 0 / 0
02.10.2015, 11:57:45
    #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
02.10.2015, 12:04:32
    #39066927
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
vadval15,

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

А покажите значение SQLQuery1.SQL.Text (или где там текст запроса хранится) в рабочем и нерабочем вариантах.
...
Рейтинг: 0 / 0
02.10.2015, 12:27:43
    #39066974
vadval15
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
Тип поля f3 был преобразован с помощью оператора ALTER TABLE со значением MODIFY. На мой взгляд, тип VARCHAR больше соответствует содержанию поля f3, хотя разница между ними, насколько я понимаю, затрагивает лишь объём выделяемой памяти.
...
Рейтинг: 0 / 0
02.10.2015, 12:29:40
    #39066978
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
vadval15Тип поля f3 был преобразован с помощью оператора ALTER TABLE со значением MODIFY. На мой взгляд, тип VARCHAR больше соответствует содержанию поля f3, хотя разница между ними, насколько я понимаю, затрагивает лишь объём выделяемой памяти.Тогда, похоже, моя изначальная гипотеза была верной - того значения, которого найти не удается, просто нет в таблице.
...
Рейтинг: 0 / 0
02.10.2015, 12:38:57
    #39067000
vadval15
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
Текст запроса SELECT везде одинаков и соответствует приведенному, без вариантов. Разница состоит лишь в содержании поля f3 таблицы - в одном случае запрос работает с ним как с CHAR(6), в другом - как с VARCHAR(200). Примеры содержания поля f3 в обоих вариантах указаны выше.
...
Рейтинг: 0 / 0
02.10.2015, 12:48:58
    #39067021
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
vadval15Текст запроса SELECT везде одинаков и соответствует приведенному, без вариантов.Ну, привели вы не текст запроса, а код, его собирающий. Но опустим это и поверим, что он действительно один и тот же. Тогда единственное объяснение - 18225665
...
Рейтинг: 0 / 0
02.10.2015, 13:25:18
    #39067080
vadval15
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
Большое спасибо всем за ответы. Действительно, ваша гипотеза подтвердилась - оператор SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.
...
Рейтинг: 0 / 0
02.10.2015, 13:35:30
    #39067091
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
vadval15оператор SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.Это какие-то суровые сказки... trim делать не пробовали?
...
Рейтинг: 0 / 0
02.10.2015, 13:38:59
    #39067096
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
vadval15SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.Размеры значений должны совпадать, а не размеры поля и переменной.
...
Рейтинг: 0 / 0
02.10.2015, 13:54:00
    #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
02.10.2015, 14:00:11
    #39067126
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
Alex_Ustinovможет здесь замешан прямой "слэш".......Прямой, по идее, не должен. Обычно обратный "вредит".
...
Рейтинг: 0 / 0
02.10.2015, 14:32:24
    #39067160
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
тогда что-то там не то с "конкатенацией" ...
...
Рейтинг: 0 / 0
03.10.2015, 12:06:38
    #39067561
vadval15
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка и размер полей в таблице
Последовательность действий при реализации порекомендованного метода:
1. Создание новой таблицы с аналогичной структурой и единственной записью, при этом длина поля для неё в точности соответствует её длине. Проверка функционирования - всё нормально работает.
2. Копирование этой записи в новую таблицу, где длина поля для неё превышает её длину (равна 200). Проверка функционирования - всё продолжает нормально работать.
3. Дополнение таблицы всеми остальными записями разной длины. Проверка функционирования - всё также продолжает нормально работать.
В результате указанных действий цель оказалась достигнутой - была создана функционирующая таблица, структурно ничем не отличающаяся от первоначальной неработающей. А вот как рационально объяснить, почему не работает исходная таблица, даже после ряда обновлений - мне по-прежнему непонятно. Скорее всего, здесь присутствует какой-то системный недочёт.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка и размер полей в таблице / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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