Oracle SQL:Get все целые числа между двумя числами

Поскольку Ваш фиксация не находится ни на каком ответвлении , Вы не видите его в рабочем каталоге если Вы контроль что определенная фиксация, с помощью ее SHA1. Можно найти фиксацию путем рассмотрения reflog, который отслеживает изменения в том, что Вы проверили из repo. Если Ваш тег был XXX, Вы будете видеть что-то как:

$ git reflog
7a30fd7... HEAD@{0}: checkout: moving from master to XXX
ddf751d... HEAD@{1}: checkout: moving from 96c3b0300ccf16b64efc260c21c85ba9030f2e3a to master
96c3b03... HEAD@{2}: commit:  example commit on tag XXX, not on any branch
7a30fd7... HEAD@{3}: checkout: moving from master to XXX

, Который говорит Вам SHA1, что Вы имели бы к checkout для наблюдения фиксации в рабочем каталоге.

$ git checkout 96c3b03
Note: moving to "96c3b03" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b <new_branch_name>
HEAD is now at 96c3b03... example commit on tag XXX, not on any branch
$ git checkout -b newbranch
$ git branch                #lists all branches
    feature1
    master
  * newbranch

это все казалось немного странным мне сначала, пока я не понял что мерзавец checkout места все файлы проекта с конкретной фиксации в мою файловую систему (рабочий каталог). В действительности рабочий каталог действует как браузер на локальном репозитории Мерзавца. Таким образом, Ваши изменения не были перезаписаны в репозитории , их просто не показывают в Вашем рабочем каталоге, когда Вы проверили ведущее устройство.

20
задан Tony Andrews 21 September 2009 в 12:49
поделиться

5 ответов

Первое , что я делаю при создании новой базы данных, - это создаю и заполняю некоторые базовые таблицы.

Один из них - список всех целых чисел между -N и N, другой - это список дат от 5 лет назад до 10 лет в будущем (запланированное задание может продолжать создавать их по мере необходимости в будущем), а последнее - это список всех часов в течение дня. Например, inetgers:

create table numbers (n integer primary key);
insert into numbers values (0);
insert into numbers select n+1 from numbers; commit;
insert into numbers select n+2 from numbers; commit;
insert into numbers select n+4 from numbers; commit;
insert into numbers select n+8 from numbers; commit;
insert into numbers select n+16 from numbers; commit;
insert into numbers select n+32 from numbers; commit;
insert into numbers select n+64 from numbers; commit;
insert into numbers select n+128 from numbers; commit;
insert into numbers select n+256 from numbers; commit;
insert into numbers select n+512 from numbers; commit;
insert into numbers select n+1024 from numbers; commit;
insert into numbers select n+2048 from numbers; commit;
insert into numbers select n+4096 from numbers; commit;
insert into numbers select n+8192 from numbers; commit;
insert into numbers select -n from numbers where n > 0; commit;

Это для DB2 / z, у которого есть автоматический запуск транзакции, поэтому кажется, что у него есть голые коммиты.

Да, он занимает (минимальное) место, но выполняет запросы намного проще написать, просто выбрав значения из этих таблиц. Кроме того, он очень портативен для почти любых СУБД на основе SQL.

Ваш конкретный запрос будет таким простым:

select n from numbers where n >=3 and n <= 10;

Цифры в часах и диапазонах дат весьма полезны для приложений отчетности, над которыми мы работаем. Это позволяет нам создавать нулевые записи для тех часов дня (или дат), которые не имеют никаких реальных данных, так что вместо (где нет данных о секундах месяца):

Date       | Quantity
-----------+---------
2009-01-01 |        7
2009-01-03 |       27
2009-01-04 |        6

мы можем вместо этого получить :

Date       | Quantity
-----------+---------
2009-01-01 |        7
2009-01-02 |        0
2009-01-03 |       27
2009-01-04 |        6
5
ответ дан 29 November 2019 в 22:40
поделиться

Этот трюк с таблицей Oracle DUAL также работает:

SQL> select n from
  2  ( select rownum n from dual connect by level <= 10)
  3  where n >= 3;

         N
----------
         3
         4
         5
         6
         7
         8
         9
        10
51
ответ дан 29 November 2019 в 22:40
поделиться
SQL> var N_BEGIN number
SQL> var N_END number
SQL> exec :N_BEGIN := 3; :N_END := 10

PL/SQL procedure successfully completed.

SQL>  select :N_BEGIN + level - 1 n
  2     from dual
  3  connect by level <= :N_END - :N_BEGIN + 1
  4  /

         N
----------
         3
         4
         5
         6
         7
         8
         9
        10

8 rows selected.

Здесь используется тот же трюк, что и у Тони. Обратите внимание, что когда вы используете SQL * Plus 9, вы должны сделать этот запрос встроенным представлением, как показал вам Тони. В SQL * Plus 10 или выше вышеуказанного достаточно.

С уважением, Роб.

4
ответ дан 29 November 2019 в 22:40
поделиться

Или вы можете использовать Between

Select Column1 from dummy_table where Column2 Between 3 and 10
1
ответ дан 29 November 2019 в 22:40
поделиться

Для этого вы можете использовать предложение MODEL.

SELECT c1 from dual
  MODEL DIMENSION BY (1 as rn)  MEASURES (1 as c1)
  RULES ITERATE (7)
  (c1[ITERATION_NUMBER]=ITERATION_NUMBER+7)
4
ответ дан 29 November 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: