Oracle DB: Как я могу записать регистр игнорирующего запроса?

Это можно сделать с помощью функции limit, это может показаться не новым, но я кое-что добавил. Код должен идти:

SELECT * FROM table_name LIMIT 100,10;

для приведенного выше случая предположим, что у вас есть 110 строк из таблицы. и вы хотите выбрать последние десять, 100 - это строка, которую вы хотите начать печатать (если вы хотите печатать), а десять показывает, сколько строк вы хотите выбрать из таблицы. Для более точного способа вы можете начать с выбора всех строк, которые вы хотите распечатать, а затем взять последний идентификатор строки, если у вас есть столбец идентификатора (я рекомендую поставить один), затем вычесть десять из последнего номера идентификатора, и это будет быть там, где вы хотите начать, это заставит вашу программу функционировать автономно и для любого количества строк, но если вы напишите значение напрямую, я думаю, вам придется менять код каждый раз, когда данные вставляются в вашу таблицу. Я думаю, что это помогает. Пак и Бонум.

52
задан zeroDivisible 22 June 2009 в 23:51
поделиться

7 ответов

Вы можете использовать операторы ALTER SESSION, чтобы установить сравнение без учета регистра. См. этот FAQ .

alter session set NLS_COMP=ANSI;
alter session set NLS_SORT=BINARY_CI;

Для всех тех, кто посетил через 8 лет после того, как этот исходный ответ был принят (для 10gR2):

После 10gR2 параметр NLS_COMP должен быть `LINGUISTIC ':

ALTER SESSION SET NLS_COMP=LINGUISTIC;
36
ответ дан 7 November 2019 в 08:58
поделиться
Select * from table where upper(table.name) like upper('IgNoreCaSe');

В качестве альтернативы замените верхнее нижнее.

116
ответ дан 7 November 2019 в 08:58
поделиться

Вы можете использовать нижнюю или верхнюю функцию по обе стороны от условия where

28
ответ дан 7 November 2019 в 08:58
поделиться

.. .также выполните преобразование в верхний или нижний вне запроса:

tableName:= UPPER(someValue || '%');

...

Select * from table where upper(table.name) like tableName 
3
ответ дан 7 November 2019 в 08:58
поделиться

Вы можете использовать функцию upper () в своем запросе, а для увеличения производительности вы можете использовать базовый индекс функции

 CREATE INDEX upper_index_name ON table(upper(name))
7
ответ дан 7 November 2019 в 08:58
поделиться

Вы также можете использовать регулярные выражения. :

SELECT * FROM TABLE WHERE REGEXP_LIKE (TABLE.NAME,'IgNoReCaSe','i');
13
ответ дан 7 November 2019 в 08:58
поделиться

Также не забывайте очевидное: должны ли данные в таблицах иметь регистр? Вы могли только вставить строки, уже написанные в нижнем регистре (или преобразовать существующие строки БД в нижний регистр), и сделать это с самого начала.

0
ответ дан 7 November 2019 в 08:58
поделиться
Другие вопросы по тегам:

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