Сравнение без учета регистра в ABAP OpenSQL SELECT - PullRequest
3 голосов
/ 22 июня 2011

В ABAP можно ли игнорировать регистр при сравнении полей в предложении WHERE для SELECT?

SELECT * 
FROM some_table 
WHERE field1 = variable1.

Как сравнить поля1 с переменной1, игнорируя при этом другой регистр?

Ответы [ 4 ]

3 голосов
/ 08 августа 2018

Open SQL может сделать это с помощью функции UPPER , поскольку ABAP 7.51 .

Пример:

SELECT * 
FROM some_table 
WHERE UPPER( field1 ) = @variable1
INTO TABLE @DATA(internal_table).
2 голосов
/ 29 июня 2011

Вы не можете.Open SQL не поддерживает условия без учета регистра.

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

2 голосов
/ 22 июня 2011

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

В противном случае вы можетенайдите в документации базовой БД что-то, что позволяет осуществлять такой поиск, и в этом случае вы можете выполнить собственный SELECT.

Например, если ваша система SAP использует Oracle в качестве базовой БД, вы можете обратиться к этомустатья: http://www.dba -oracle.com / oracle_news / 2005_5_20_great_technique_case_sensitive_text_searching.htm

1 голос
/ 03 июля 2011

OpenSQL не может этого сделать - как и другие, упомянутые ранее в более ранних выражениях.

Но есть одна альтернатива: Собственный SQL , «верхний»функция, означает:

translate compare_value to upper case.

exec sql performing addX.
  select * FROM  INTO :workarea
   where upper("choose_column") eq :compare_value
endexec.

form addX.
  append workarea to itab.
endform.
...