SELECT条件中不区分大小写的比较



在ABAP SQL中,当比较SELECTWHERE子句中的字段时,我可以忽略这种情况吗?

SELECT * 
FROM some_table 
WHERE field1 = variable1.

如何在忽略不同情况的情况下比较field1variable1

Open SQL可以通过启动ABAP 7.51的函数UPPER来实现这一点。

示例:

SELECT * 
FROM some_table 
WHERE UPPER( field1 ) = @variable1
INTO TABLE @DATA(internal_table).

根据您从中选择的表,您可能很幸运,因为SAP将相同的值存储在相关的matchcode字段中,在该字段中,值总是大写。

否则,您可能会在底层数据库的文档中找到允许进行此类搜索的内容,在这种情况下,您可以发出本机SELECT。

例如,如果您的SAP系统使用Oracle作为底层数据库,您可以参考本文:http://www.dba-oracle.com/oracle_news/2005_5_20_great_technique_case_sensitive_text_searching.htm

你不能。Open SQL不支持不区分大小写的条件。

您可以按照mydoghaswarms的建议进行操作,也可以在选择数据后使用regex过滤结果。

OpenSQL无法做到这一点,就像前面的语句中提到的其他语句一样。

但是还有一种选择:Native 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.

最新更新