|
|
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
ElicPL SQL НовичокЯ пока сделал так Код: plsql 1. А оно именно так и работало.я так и думал с самого начала и гадал, где здесь "грубая" ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 09:52 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
PL SQL Новичок, А если не секрет какие A1 и A2 в селекте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 09:54 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Это переменные типа INTEGER, которые получают значения из входных параметров процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:01 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Вариант поменять тип столбца путем add +update + drop + rename еще не предлагали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:09 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
AmKadВариант поменять тип столбца путем add +update + drop + rename еще не предлагали?Нет, этого нельзя делать. Таковы условия задачи. Работать с той таблицей, которая есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:13 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
В таком разе, остаётся только рассмотреть функциональный индекс , при необходимости... Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:35 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Viewer, Понятно, спасибо. Хотя сам вопрос звучал несколько иначе - как правильно составить условие в запросе на выборку. Я написал как Код: plsql 1. Если есть какие-то возражения или улучшения, то прошу поделиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:41 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
PL SQL Новичок, Грубая ошибка может заключатся именно в сравнении символьных строк и чисел от постановки зависит (от сути поля), не зря ж оно символьное напр для '10001' и '9000' between отработает по разному зы "чеки" могут быть напр 07077070, ведущий ноль важен ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:46 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
yabsну можешь а1 и а2 в строку конвертировать, если тимлида это устроит в случае целых числами вроде будет тот же результат хотя думай сам, это уже посимвольное сравнение строк Код: sql 1. православнее было бы явно конвертировать RECEIPT в число, предварительно проверив содержимое Код: sql 1. С обоими вариантами ты залезаешь в еще большую жопу. '22' between '1' and '3' - не тот результат, что требуется. Порядок вычисления предикатов определяется оптимизатором, regexp в таком виде не гарантирует отсутсвие ошибки. Тогда уж вставлял бы regexp, только substr, в качестве аргумента to_number. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:46 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
yabsправославнее было бы явно конвертировать RECEIPT в число, предварительно проверив содержимое Код: sql 1. Наивный, это не спасёт. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:52 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
PL SQL НовичокWHERE RECEIPT between A1 and A2;А какой практический смысл отбора номеров у чеков between? PL SQL НовичокЯ бы никогда не стал хранить число как строку.А кто сказал что номер чека всегда число? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 10:57 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
ORA__SQLА какой практический смысл отбора номеров у чеков between? такова бизнес-логика 20874794 ORA__SQLА кто сказал что номер чека всегда число? PL SQL Новичокя уже несколько раз повторял, что в этом поле всегда будут целые положительные числа. Сколько раз мне нужно написать эту фразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 11:13 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
какой-то лютый трэш начался )) PL SQL Новичок, не трогай вообще поле таблицы, не модифицируй его. все советы (и мой в том числе) сводятся к: приводи к типу поля таблицы свои переменные, а не наоборот. а как ты это будешь делать: по заветам Элика или сам по себе, не велика в данном случае разница. чтобы советы по "канону" давать, надо весь твой код видеть и структуру данных. и то, этот "канон" вполне может стать неканоничным через 5 лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 11:24 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
ORA__SQLА какой практический смысл отбора номеров у чеков between?Абсолютно никакого. Но так надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 11:34 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
ORA__SQLА кто сказал что номер чека всегда число?Мне что, землю есть вот из этого цветочного горшка, чтобы вы мне поверили? (c) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 11:35 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Fogelне трогай вообще поле таблицы, не модифицируй его.Да я бы с удовольствием его модифицировал, если бы такие привилегии имел в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 11:38 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
PL SQL НовичокORA__SQLА кто сказал что номер чека всегда число?Мне что, землю есть вот из этого цветочного горшка, чтобы вы мне поверили? (c)Сделать миграцию и отрефакторить не судьба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 11:38 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
ORA__SQL, не понял вашу мысль. Что именно рефакторить и с какой целью? Если замерить производительность запроса - то можно и на боевой БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 11:50 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
ORA__SQLСделать миграцию и отрефакторить может что-нибудь попроще чем: data migration перенос (миграция) данных 1) процесс физического перемещения данных из одной среды в другую - на другую аппаратную платформу или в другую , возможно с преобразованием форматов (см. data conversion) refactoring (от factor разлагать на множители, составляющие, вычленять) - перестройка [программного кода], перепроектирование , рефакторинг в программировании - переписывание исходных текстов с целью улучшения внутренней структуры программного кода при сохранении его интерфейсов и функциональности. Один из способов борьбы с программной энтропией (software entropy) 20875004 - и проверить можно и гарантировать на будущее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 12:00 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
PL SQL Новичоксравнение должно проходить так, как если бы поле RECEIPT был бы INTEGER Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 12:47 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
PL SQL НовичокMaximaXXL, Это переменные типа INTEGER, которые получают значения из входных параметров процедуры. Если все кроме Вас оперируют varchar-ами для номеров чеков, то может случиться еще 2 неявных преобразования на входных параметрах, что тоже может сыграть не в Вашу пользу операторы min и max - для поля RECEIPT - тоже могут привести к разным результатам при работе с Number и Varchar ... Т.о. надо видеть постановку и реализацию, чтоб сказать, как Ваш ТимЛид, грубая ошибка или просто неявное преобразование которого лучше избегать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 12:47 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Да нуPL SQL Новичоксравнение должно проходить так, как если бы поле RECEIPT был бы INTEGER Код: plsql 1. Больший размер функционального индекса. В случае появления не integer вместо ошибки возможно неожиданное поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 13:07 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
MaximaXXLоператоры min и max - для поля RECEIPT - тоже могут привести к разным результатам при работе с Number и VarcharЭто не операторы, а агрегатные функции. И для поля RECEIPT их никто не применяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 13:34 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Да ну, особенно если "номер" слева дополняется нулями зы не понимаю я таких заносчивых Тимлид-ов, раз сказал что ошибка, тем более грубая, что корона слетит, если обьяснит в чем грубость ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 14:07 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Staxне понимаю я таких заносчивых Тимлид-ов, раз сказал что ошибка, тем более грубая А ведь ошибка. И именно грубая. ТС видит в данных строки, которые выглядят как целые числа, и уже на этом основании готов "землю есть" что это они самые. Между тем речь идет об идентификаторах, а не о числах. И семантика работы с ними, как уже справедливо отметили участники форума, не тождественна семантике работы с целыми. Конкретно по указанному случаю - целые числа и их представления в виде строк в позиционной системе счисления ведут себя одинаково, если все строки одной длины (или сведены к ней lpad-ом). Возможно, именно эта похожесть и приводит к выводу о том, что "такая бизнес-логика". Я бы рекомендовал ТС смирить гордыню, подойти к тимлиду и попросить детальных пояснений. А на будущее можно дать рекомендацию, которая справедлива в большинстве случаев: тип данных в таблице - первичен. По возможности избегайте применения функций вообще и преобразований типа в частности к полям таблицы в кляузе where - вместо этого преобразуйте параметры. А также следите за типами и никогда не используйте неявных преобразований. В справедливости рекомендации сможете неоднократно убедиться в процессе сопровождения и развития программного продукта. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39537378&tid=1885079]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 208ms |
| total: | 480ms |

| 0 / 0 |
