Odata的使用——规范函数

其实呢对于Odata来说,最常用的应该就是使用filter来查询了,但是说到查询,避免不了模糊查询,可是在filter的表达式中没有一个运算符是可以用来做模糊查询的,可能我们会想到将运算符用like替换就可以了,其实不然,这语法是不对的。那么模糊查询究竟该如何实现呢?那就是使用函数contains

1、contains

$filter=contains(Name,'Ca')

Name中包含‘Ca’的所有信息,这样就达到了模糊查询的效果,只输入其中的几个字符便可查到所有包含这几个字符的信息

拓展:不包含(not contains)

$filter=not contains(Name,'Ca')

Name中不包含‘Ca’的所有信息,与contains效果相反,是不包含

2、startswith

$filter=startswith(Name, 'Ca')

Name以Ca开头的所有信息

3、endswith

$filter=endswith(Name, 'ong')

Name以ong结尾的所有信息

4、length

$filter=length(Name) eq 8

Name中字符长度等于8的所有信息

5、indexof

$filter=indexof(Name, 'xiao') eq 1

Name从第二个字母开始包含xiao的所有信息

6、replace

$filter=replace(Name, 'C ', 'H') eq 'Ca'

Name等于Ca的信息中C被H替换

7、substring

$filter=substring(Name, 1) eq 'xiao'

Name从第二个字符开始是xiao的所有信息

$filter=substring(Name, 1, 2) eq 'ui'

Name的第二个和第三个字符是ui的所有信息

8、tolower

$filter=tolower(Name) eq 'Hong'

Name等于Hong的字符都转换为小写

9、toupper

$filter=toupper(Name) eq 'Hong'

Name等于Hong的字符都转换为大写

10、trim

$filter=length(trim(Name)) eq length(Name)

Name去调空格后依旧等于Name的所有信息

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要创建一个通用的 ABAP OData 服务,可以使用 Function Import 和 Function Module 实现动态调用函数。下面是具体步骤: 1. 在 SEGW 中创建一个 OData 服务。 2. 在 Service Implementation 中,选择 Function Import。 3. 点击右键,选择 Create Function Import。 4. 在 Function Import 的 Properties 中,设置 Function Module 的名称和输入参数。 5. 在 Function Import 的 Code 中,使用 FUNCTION MODULE 语句调用函数模块,并将输入参数传递给函数模块。 例如,以下代码演示了如何通过函数名动态调用函数: ``` FUNCTION zfm_generic. DATA: lv_function_name TYPE string, lt_input_params TYPE abap_parmbind_tab, lt_output_params TYPE abap_parmbind_tab, ls_input TYPE zinput, ls_output TYPE zoutput. FIELD-SYMBOLS: <fs_input> TYPE any, <fs_output> TYPE any. * 获取函数名和输入参数 TRY. lv_function_name = request->get_header_field( 'Function-Name' ). cl_rest_runtime=>deserialize( EXPORTING iv_json = request->get_data( ) IMPORTING es_data = ls_input ). CATCH cx_rest_runtime_error INTO DATA(lx_error). response->set_status( i_code = lx_error->status_code i_reason = lx_error->message ). RETURN. ENDTRY. * 获取输出参数 ASSIGN ls_output TO <fs_output>. lt_output_params = VALUE #( ( name = 'P_OUTPUT' ref_kind = cl_abap_datadescr=>ref_kind_data ref_type = cl_abap_datadescr=>describe_by_name( 'ZOUTPUT' ) ) ). lt_input_params = VALUE #( ( name = 'P_INPUT' ref_kind = cl_abap_datadescr=>ref_kind_data ref_type = cl_abap_datadescr=>describe_by_name( 'ZINPUT' ) low = REF #( ls_input ) ) ). CALL FUNCTION lv_function_name EXPORTING iv_testmode = abap_true TABLES pt_input = lt_input_params pt_output = lt_output_params. <fs_output> = lt_output_params[ name = 'P_OUTPUT' ]-value. * 将输出参数序列化为 JSON 格式并返回客户端 cl_rest_runtime=>serialize( EXPORTING iv_data = <fs_output> IMPORTING ev_json = lv_response ). response->set_data( lv_response ). ENDFUNCTION. ``` 在上面的代码中,我们首先获取客户端传递的函数名和输入参数。然后,使用 CALL FUNCTION 语句动态调用函数,并将输入参数传递给函数。 最后,获取输出参数,并将其序列化为 JSON 格式返回给客户端。 希望这可以回答您的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值