gpt4 book ai didi

abap - 按 STRING 类型的列选择

转载 作者:行者123 更新时间:2023-12-05 00:44:37 26 4
gpt4 key购买 nike

我会尽量解释得尽可能简单。

我有一个数据库表“DB_JOURNAL”,它只有 2 列“日期”和“日志”类型 字符串 .

例子 :

01.01.2020 | I played football.

02.02.2020 | I played basketball

我想写一个 Select 语句并在查询中搜索 字符串 .
就像搜索足球这个词一样。
Select * from DB_JOURNAL into table lt_journal
where journal like '%football%'.

这在 ABAP 中是不允许的:

The field "JOURNAL" is a long string or a text and cannot be used in the WHERE condition.



有什么解决办法吗?

最佳答案

唯一的解决方案是使用 native SQL ,即您的数据库的 SQL。

native SQL 可以以多种方式运行。

最短但也是最旧的代码(SAP 建议不要使用它)是语句 EXEC SQL :

DATA text TYPE string.
EXEC SQL PERFORMING sr.
SELECT text FROM sotr_textu INTO :text WHERE text LIKE '%e%'
ENDEXEC.
FORM sr.
WRITE / text.
ENDFORM.

注意:以上代码适用于 HANA、MSSQL 和 Oracle 数据库,但您需要使用 MaxDB 将表名和列名设置为大写。

更复杂的查询示例:
DATA: text   TYPE string,
status TYPE string.

status = 'R'.

TRY.
EXEC SQL PERFORMING sr.
SELECT TEXT FROM SOTR_TEXTU INTO :text
WHERE STATUS = :status
AND TEXT LIKE '%e%'

ENDEXEC.
CATCH cx_sy_native_sql_error INTO DATA(exc).
cl_demo_output=>display( exc->get_text( ) ).
ENDTRY.
FORM sr.
WRITE / text.
ENDFORM.

对于不区分大小写的搜索:
 AND  UPPER(TEXT) LIKE UPPER(:text)

其他方式是 ADBCAMDP .

农行已取代 EXEC SQL .

关于abap - 按 STRING 类型的列选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59897757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com