|
|
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
В СУБД MySQL оператор выборки имеет следующий вид: Код: sql 1. Если в указанном операторе в качестве поля f3 выбрать, например, символьное поле размера CHAR(6), то выдаётся корректный результат в виде полей f1 и f2, но если вместо данного поля взять символьное поле произвольной длины размера VARCHAR(200) или CHAR(200), то результат вообще перестаёт выдаваться. Пока при рассмотрении этой проблемы мне не удалось найти никакого описания ограничения размера или содержания поля f3. Буду признателен за любой совет по её решению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 10:49:04 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
Ну приведите скрипт, который мы сможем запустить и воспроизвести вышеописанное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 10:51:29 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15, Может быть, все проще - в поле f3 есть значение равное 'x', а в других полях нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 10:57:03 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. Если в переменной 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 11:23:39 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15, Так в итоге поле f3 какого типа? И что означает формулировка "ничего не работает" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 11:33:55 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
1. При использовании поля f3 как типа VARCHAR(200), так и типа CHAR(200) результат получается аналогичный - отрицательный. 2. Отрицательный результат (ничего не работает) - в результате работы приведенных ниже операторов выдаются пустые строки p1 и p2: Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 11:57:45 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15, Что означает "использование поля как типа VARCHAR(200)" ? Поле нельзя "использовать как", оно имеет определенный тип, указанный при создании таблицы. И именно указать этот тип я прошу. А "использовать как" другой тип - такого не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 12:04:32 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15, А покажите значение SQLQuery1.SQL.Text (или где там текст запроса хранится) в рабочем и нерабочем вариантах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 12:25:57 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
Тип поля f3 был преобразован с помощью оператора ALTER TABLE со значением MODIFY. На мой взгляд, тип VARCHAR больше соответствует содержанию поля f3, хотя разница между ними, насколько я понимаю, затрагивает лишь объём выделяемой памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 12:27:43 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15Тип поля f3 был преобразован с помощью оператора ALTER TABLE со значением MODIFY. На мой взгляд, тип VARCHAR больше соответствует содержанию поля f3, хотя разница между ними, насколько я понимаю, затрагивает лишь объём выделяемой памяти.Тогда, похоже, моя изначальная гипотеза была верной - того значения, которого найти не удается, просто нет в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 12:29:40 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
Текст запроса SELECT везде одинаков и соответствует приведенному, без вариантов. Разница состоит лишь в содержании поля f3 таблицы - в одном случае запрос работает с ним как с CHAR(6), в другом - как с VARCHAR(200). Примеры содержания поля f3 в обоих вариантах указаны выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 12:38:57 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15Текст запроса SELECT везде одинаков и соответствует приведенному, без вариантов.Ну, привели вы не текст запроса, а код, его собирающий. Но опустим это и поверим, что он действительно один и тот же. Тогда единственное объяснение - 18225665 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 12:48:58 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
Большое спасибо всем за ответы. Действительно, ваша гипотеза подтвердилась - оператор SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 13:25:18 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15оператор SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.Это какие-то суровые сказки... trim делать не пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 13:35:30 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
vadval15SELECT не может корректно осуществлять поиск по полю переменной длины, то есть размеры запрашиваемой в этом операторе переменной и соответствующего поля в таблице должны совпадать.Размеры значений должны совпадать, а не размеры поля и переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 13:38:59 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
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 может здесь замешан прямой "слэш"....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 13:54:00 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovможет здесь замешан прямой "слэш".......Прямой, по идее, не должен. Обычно обратный "вредит". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 14:00:11 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
тогда что-то там не то с "конкатенацией" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2015, 14:32:24 |
|
||
|
Выборка и размер полей в таблице
|
|||
|---|---|---|---|
|
#18+
Последовательность действий при реализации порекомендованного метода: 1. Создание новой таблицы с аналогичной структурой и единственной записью, при этом длина поля для неё в точности соответствует её длине. Проверка функционирования - всё нормально работает. 2. Копирование этой записи в новую таблицу, где длина поля для неё превышает её длину (равна 200). Проверка функционирования - всё продолжает нормально работать. 3. Дополнение таблицы всеми остальными записями разной длины. Проверка функционирования - всё также продолжает нормально работать. В результате указанных действий цель оказалась достигнутой - была создана функционирующая таблица, структурно ничем не отличающаяся от первоначальной неработающей. А вот как рационально объяснить, почему не работает исходная таблица, даже после ряда обновлений - мне по-прежнему непонятно. Скорее всего, здесь присутствует какой-то системный недочёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2015, 12:06:38 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39067096&tid=1832650]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 309ms |

| 0 / 0 |
