powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выборка строк
24 сообщений из 24, страница 1 из 1
Выборка строк
    #32587494
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача такая. Есть таблица в которой есть текстовое поле, назовём его somefield. Значения этого поля от '1' до '1000'.
Нужно выбрать в запросе только те записи которые сожержат поле значения поля somefield в интервале от '1' до '5'.
Пишу запрос

Select * from sometable where somefield between '1' and '5'

выполняю и получаю все записи в которых сомфёлд начинаеть с 1 по 5. Почемуто файербёрд сравнивает только начальные символы. И если одна строка короче другой, но являеться её подстрокой, то они считаються равными.

Что с этим можно сделать?
...
Рейтинг: 0 / 0
Выборка строк
    #32587523
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
CAST(somefield AS INTEGER)
...
Рейтинг: 0 / 0
Выборка строк
    #32587906
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, а если значения полей будут 'sometext1', 'sometext2', ...., 'sometext n'
тогда что?
...
Рейтинг: 0 / 0
Выборка строк
    #32587919
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexPortПочемуто файербёрд сравнивает только начальные символы. И если одна строка короче другой, но являеться её подстрокой, то они считаються равными.
Что с этим можно сделать?
Прочитать документацию. И книжечки по SQL.
Конструкция where somefield between '1' and '5' есть эквивалент конструкции where (somefield >= '1') and (somefield <= '5').
Сравнение же строковых типов на > и < производится аналогично виндовым
функциям, типа AnsiStrComp() и пр.
...
Рейтинг: 0 / 0
Выборка строк
    #32587921
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я это понял ещё до того как задавать свой вопрос.
Перечитай, пожалуйста, моё первое сообщение. Там спрашиваеться не почему это происходит, а как это обойти.
...
Рейтинг: 0 / 0
Выборка строк
    #32587928
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конкретно укажи условия. Не абстрактно.
От этого зависит собственно и построение запроса.
Можно завернуть на SUBSTRING.
Можно попытаться взять на STARTING WITH.
Можно на LIKE.
Всё зависит от условий задачи.
...
Рейтинг: 0 / 0
Выборка строк
    #32589171
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Условие такое:
выбрать из таблицы все записи в которых поле Cod находиться в интервале от Cod1 до Cod2. Где Cod, Cod1 и Cod2 имеют строковый тип!
Например:
'Cod1'
'Cod2'
'Cod3'
'Cod10'
'Cod20'
'Cod30'

Если Cod1='Cod1' Cod2='Cod3' то результатом запроса должны быть первые 3 записей, но никак не все 6 как в случак с Between.
...
Рейтинг: 0 / 0
Выборка строк
    #32589250
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
SELECT * FROM tab1 T1
WHERE (CAST(SUBSTRING(T1.Cod FROM  4 ) AS INTEGER) BETWEEN  2  AND  3 )
  AND (T1.Cod STARTING WITH 'Cod')
Обрати внимание на порядок следования предикатов в клаузе WHERE.
FireBird 1.5 обрабатывает условия справа-налево.
Именно поэтому, условие (T1.Cod STARTING WITH 'Cod') должно быть
завершающим. Чтоб обрабатывалось первым.
Ибо если таблица содержит разнородные данные, то можно получить
исключение при кастинге.
...
Рейтинг: 0 / 0
Выборка строк
    #32589263
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BETWEEN 1 AND 3
...
Рейтинг: 0 / 0
Выборка строк
    #32589357
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну неужели непонятно, что пользователь может ввести вместо Код всё что угодно. и не обязательно что одно слово будет повторяться во всех полях.

Короче я понял, что помощи тут я не дождусь,
вам ребята фантазии не хватает.

Особенно меня порадовал последний ответ. Спасибо. Развеселили меня, огорчённого проиграшем португалии.
...
Рейтинг: 0 / 0
Выборка строк
    #32589364
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажи мне хоть, почему FierBird не понимает функцию Length
...
Рейтинг: 0 / 0
Выборка строк
    #32589367
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе же, мля, сказано было: конкретные условия !
Нет, мля, начинается: "...пользователь может ввести вместо Код всё что угодно"
...
Рейтинг: 0 / 0
Выборка строк
    #32589400
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexPortКороче я понял, что помощи тут я не дождусь,
вам ребята фантазии не хватает.

Вам бы базу перепроектировать. Если делать все правильно, фантазию редко приходится применять, хватает всего, что есть в фаерберде

AlexPortОсобенно меня порадовал последний ответ. Спасибо. Развеселили меня, огорчённого проиграшем португалии.

Ответ был корректный для тех условий, что вы указали. Если вы хотите анализировать строки, выделяя из них цифры или что-то в этом роде, используйте UDF (в том числе strlen и т.п.). Если вы хотите как-то это дело корректно сортировать, разнесите цифры и буквы по разным полям, например.
...
Рейтинг: 0 / 0
Выборка строк
    #32589447
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну неужели непонятно, что пользователь может ввести вместо Код всё что угодно. и не обязательно что одно слово будет повторяться во всех полях.
Ну неужели тут всем больше делать нечего, кроме как додумывать туманно заданные вопросы.
Короче я понял, что помощи тут я не дождусь,
Информации тебе выдали вполне достаточно, чтобы справиться с твоей проблемкой.
вам ребята фантазии не хватает.
Воспаленной?
Особенно меня порадовал последний ответ. Спасибо. Развеселили меня
Ты меня тоже. Не пропадай, заходи еще.
...
Рейтинг: 0 / 0
Выборка строк
    #32589640
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexPortУсловие такое:
выбрать из таблицы все записи в которых поле Cod находиться в интервале от Cod1 до Cod2. Где Cod, Cod1 и Cod2 имеют строковый тип!
Например:
'Cod1'
'Cod2'
'Cod3'
'Cod10'
'Cod20'
'Cod30'
А ты попробуй сделать order by по этому полю и увидишь какая будет сортировка. И почитать что-нибудь про правила сравнения строк.
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Выборка строк
    #32590005
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лентяй[quot ]
Ну неужели тут всем больше делать нечего, кроме как додумывать туманно заданные вопросы.

Вопрос был задан абсолютно корректно. А если у когото не хватает ума, просто что бы ответить на элементарный ворос, то мне остаёться только развести руками.

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

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

Единственный, кто хоть немного меня понял - это fedd. Спасибо тебе за ответ.

А всем остальным желаю поступить в ВУЗ. И попробуйте заплатить комиссии, а то просто так вас не примут.

Спасибо за внимание.
...
Рейтинг: 0 / 0
Выборка строк
    #32590017
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам сюда .
...
Рейтинг: 0 / 0
Выборка строк
    #32590044
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты какой вуз закончил?

Select * from sometable where somefield between '1' and '5'

выполняю и получаю все записи в которых сомфёлд начинаеть с 1 по 5. Почемуто файербёрд сравнивает только начальные символы. И если одна строка короче другой, но являеться её подстрокой, то они считаються равными.

У меня ребенок учиться в пятом классе, но даже он уже понимает по какому принципу сортирруются строки.

Удачи.
...
Рейтинг: 0 / 0
Выборка строк
    #32590097
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
»» Мимохромающий


Спасибо большое, вас туда же!
...
Рейтинг: 0 / 0
Выборка строк
    #32590098
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Вернулся!
...
Рейтинг: 0 / 0
Выборка строк
    #32590099
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторИнформации тебе выдали вполне достаточно, чтобы справиться с твоей проблемкой.


Так чего же ты мне решение не напишешь?
...
Рейтинг: 0 / 0
Выборка строк
    #32590102
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexPort.....
Единственный, кто хоть немного меня понял - это fedd. Спасибо тебе за ответ.
.....


Пожалуйста.

В данном вопросе я поддерживаю Мимопроходящего. Вас поняли все, просто я вежливее. Попрошу не делать больше постингов не по теме. Обиды и флейм буду удалять. Задавайте конкретные вопросы.
...
Рейтинг: 0 / 0
Выборка строк
    #32590103
AlexPort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ты Брут ...

[ну просил же! к порядку плиз! говорю тебе, МП прав. не обижайся и сам не лезь в драку. тут люди с большим опытом, при должном уважении к ним они смогут тебе помочь, если ты им дашь помочь себе и если еще не обиделись (подписался: fedd)]
...
Рейтинг: 0 / 0
Выборка строк
    #32590512
Nikola18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexPortУсловие такое:
выбрать из таблицы все записи в которых поле Cod находиться в интервале от Cod1 до Cod2. Где Cod, Cod1 и Cod2 имеют строковый тип!
Например:
'Cod1'
'Cod2'
'Cod3'
'Cod10'
'Cod20'
'Cod30'

Если Cod1='Cod1' Cod2='Cod3' то результатом запроса должны быть первые 3 записей, но никак не все 6 как в случак с Between.

Делается это через так:

'Cod001'
'Cod002'
'Cod003'
'Cod010'
'Cod020'
'Cod030'
'Cod100'
...

и between 'Cod001' and 'Cod003'
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выборка строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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