Alation查询表单及参数无法传递多值问题求助
解决Alation SQL表单单字段多关键词搜索问题
问题核心
你当前用raw类型参数时,输入逗号分隔多值无法返回数据,根源在于:
raw类型会直接把用户输入内容插入SQL,若输入带空格的逗号分隔值(如11222, 22333),会触发SQL语法错误;- 若
contractnumber是字符串类型,直接输入的数值不会自动添加单引号,无法匹配字符串字段。
针对性解决方案
根据contractnumber的字段类型,选择对应SQL写法:
情况1:contractnumber为数值类型
用text类型参数接收输入,通过字符串分割、类型转换处理多值:
select * From eda.table1 Where contractnumber IN ( SELECT unnest(string_to_array(${contractnumber:type:text}, ','))::int );
string_to_array把输入的逗号分隔字符串转为数组;unnest将数组展开为单行数据;::int把字符串转为数值类型,匹配字段类型。
情况2:contractnumber为字符串类型
同样用text类型参数,处理输入中的空格并分割:
select * From eda.table1 Where contractnumber IN ( SELECT trim(unnest(string_to_array(${contractnumber:type:text}, ','))) );
trim去除每个值前后的空格(适配用户输入11222, 22333这类带空格的格式);- 无需额外类型转换,直接匹配字符串字段。
使用说明
用户只需在表单字段中输入逗号分隔的关键词(可带空格),即可返回所有匹配的合同行数据。
内容的提问来源于stack exchange,提问作者u4carson
相关产品推荐
相关产品推荐

