关于在postgresql中实现判断一个字符包含在另一个字符中的解决方法,场景常用于普通字符串是否包含在能分割成数组的字符串中。
首先了解postgresql的操作符,本次使用的是 @> (包含),其他操作符访问官 https://www.postgresql.org/docs/9.1/functions-array.html
sql 语句为 string_to_array(a.pids,',')@> array['10'] :10是否包含在a.pids字段的值中,@>操作符是操作数组的所以要先把操作符两边转化为数组 。string_to_array将字符串按指定格式转化为数组,array[] 创建数组的一种方式。
在数据库连接工具中运行得到正确结果,之后就要将编写好的sql迁移到xml文件中,在xml文件中就会运到问题,array[#{id}],以后发现运行及报错,换另一种创建数组的方式 '{ }',采用CONCAT函数拼接上'{}'和#{id},会发现还是报错,因为这种形式创建数组外面必须是'{ }'这种形式。
解决不了,得出结论此种方式不行,最终发现还得用string_to_array函数来实现,所以最终在xml文件中的sql为:
string_to_array(a.pids,',')@>string_to_array(#{id},'')
自己也是刚从mysql切换到postgresql,如果觉得有用就点个赞。