|
|
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Задача такая. Есть таблица в которой есть текстовое поле, назовём его somefield. Значения этого поля от '1' до '1000'. Нужно выбрать в запросе только те записи которые сожержат поле значения поля somefield в интервале от '1' до '5'. Пишу запрос Select * from sometable where somefield between '1' and '5' выполняю и получаю все записи в которых сомфёлд начинаеть с 1 по 5. Почемуто файербёрд сравнивает только начальные символы. И если одна строка короче другой, но являеться её подстрокой, то они считаються равными. Что с этим можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 15:57:15 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 16:09:21 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Хорошо, а если значения полей будут 'sometext1', 'sometext2', ...., 'sometext n' тогда что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 19:56:19 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
AlexPortПочемуто файербёрд сравнивает только начальные символы. И если одна строка короче другой, но являеться её подстрокой, то они считаються равными. Что с этим можно сделать? Прочитать документацию. И книжечки по SQL. Конструкция where somefield between '1' and '5' есть эквивалент конструкции where (somefield >= '1') and (somefield <= '5'). Сравнение же строковых типов на > и < производится аналогично виндовым функциям, типа AnsiStrComp() и пр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 20:12:46 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Я это понял ещё до того как задавать свой вопрос. Перечитай, пожалуйста, моё первое сообщение. Там спрашиваеться не почему это происходит, а как это обойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 20:20:16 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Конкретно укажи условия. Не абстрактно. От этого зависит собственно и построение запроса. Можно завернуть на SUBSTRING. Можно попытаться взять на STARTING WITH. Можно на LIKE. Всё зависит от условий задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 20:33:02 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Условие такое: выбрать из таблицы все записи в которых поле Cod находиться в интервале от Cod1 до Cod2. Где Cod, Cod1 и Cod2 имеют строковый тип! Например: 'Cod1' 'Cod2' 'Cod3' 'Cod10' 'Cod20' 'Cod30' Если Cod1='Cod1' Cod2='Cod3' то результатом запроса должны быть первые 3 записей, но никак не все 6 как в случак с Between. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 12:20:43 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. FireBird 1.5 обрабатывает условия справа-налево. Именно поэтому, условие (T1.Cod STARTING WITH 'Cod') должно быть завершающим. Чтоб обрабатывалось первым. Ибо если таблица содержит разнородные данные, то можно получить исключение при кастинге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 12:45:25 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Ну неужели непонятно, что пользователь может ввести вместо Код всё что угодно. и не обязательно что одно слово будет повторяться во всех полях. Короче я понял, что помощи тут я не дождусь, вам ребята фантазии не хватает. Особенно меня порадовал последний ответ. Спасибо. Развеселили меня, огорчённого проиграшем португалии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 13:23:18 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Скажи мне хоть, почему FierBird не понимает функцию Length ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 13:25:40 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Тебе же, мля, сказано было: конкретные условия ! Нет, мля, начинается: "...пользователь может ввести вместо Код всё что угодно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 13:26:16 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
AlexPortКороче я понял, что помощи тут я не дождусь, вам ребята фантазии не хватает. Вам бы базу перепроектировать. Если делать все правильно, фантазию редко приходится применять, хватает всего, что есть в фаерберде AlexPortОсобенно меня порадовал последний ответ. Спасибо. Развеселили меня, огорчённого проиграшем португалии. Ответ был корректный для тех условий, что вы указали. Если вы хотите анализировать строки, выделяя из них цифры или что-то в этом роде, используйте UDF (в том числе strlen и т.п.). Если вы хотите как-то это дело корректно сортировать, разнесите цифры и буквы по разным полям, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 13:41:46 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Ну неужели непонятно, что пользователь может ввести вместо Код всё что угодно. и не обязательно что одно слово будет повторяться во всех полях. Ну неужели тут всем больше делать нечего, кроме как додумывать туманно заданные вопросы. Короче я понял, что помощи тут я не дождусь, Информации тебе выдали вполне достаточно, чтобы справиться с твоей проблемкой. вам ребята фантазии не хватает. Воспаленной? Особенно меня порадовал последний ответ. Спасибо. Развеселили меня Ты меня тоже. Не пропадай, заходи еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 14:00:06 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
AlexPortУсловие такое: выбрать из таблицы все записи в которых поле Cod находиться в интервале от Cod1 до Cod2. Где Cod, Cod1 и Cod2 имеют строковый тип! Например: 'Cod1' 'Cod2' 'Cod3' 'Cod10' 'Cod20' 'Cod30' А ты попробуй сделать order by по этому полю и увидишь какая будет сортировка. И почитать что-нибудь про правила сравнения строк. ------------------------ С уважением, Denis Uskov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 15:16:17 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
Лентяй[quot ] Ну неужели тут всем больше делать нечего, кроме как додумывать туманно заданные вопросы. Вопрос был задан абсолютно корректно. А если у когото не хватает ума, просто что бы ответить на элементарный ворос, то мне остаёться только развести руками. Я просто напросто расчитывал встретить сдесь нормального программиста, который сталкивался уже с подобной проблемой и придумал красивый выход из ситуации. А оказалось что здесь детский сад, и люди даже не представляют о чём идёт речь, ибо никогда не рашали реальных задачь, а всё ещё учаться в школе и ограничены кругозором недоделанного учителя. Единственный, кто хоть немного меня понял - это fedd. Спасибо тебе за ответ. А всем остальным желаю поступить в ВУЗ. И попробуйте заплатить комиссии, а то просто так вас не примут. Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 17:44:41 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
А ты какой вуз закончил? Select * from sometable where somefield between '1' and '5' выполняю и получаю все записи в которых сомфёлд начинаеть с 1 по 5. Почемуто файербёрд сравнивает только начальные символы. И если одна строка короче другой, но являеться её подстрокой, то они считаються равными. У меня ребенок учиться в пятом классе, но даже он уже понимает по какому принципу сортирруются строки. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 18:03:04 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
»» Мимохромающий Спасибо большое, вас туда же! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 18:34:28 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
авторИнформации тебе выдали вполне достаточно, чтобы справиться с твоей проблемкой. Так чего же ты мне решение не напишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 18:36:06 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
AlexPort..... Единственный, кто хоть немного меня понял - это fedd. Спасибо тебе за ответ. ..... Пожалуйста. В данном вопросе я поддерживаю Мимопроходящего. Вас поняли все, просто я вежливее. Попрошу не делать больше постингов не по теме. Обиды и флейм буду удалять. Задавайте конкретные вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 18:38:43 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
И ты Брут ... [ну просил же! к порядку плиз! говорю тебе, МП прав. не обижайся и сам не лезь в драку. тут люди с большим опытом, при должном уважении к ним они смогут тебе помочь, если ты им дашь помочь себе и если еще не обиделись (подписался: fedd)] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2004, 18:40:35 |
|
||
|
Выборка строк
|
|||
|---|---|---|---|
|
#18+
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' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2004, 08:57:02 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32590103&tid=1578325]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 185ms |
| total: | 429ms |

| 0 / 0 |
