字符串的FIND_IN_SET示例

时间:2019-04-30 05:28:38

标签: sql postgresql

我正在使用FIND_IN_SET并收到以下错误

  

SQL错误[42883]:错误:函数find_in_set(未知,字符不同[])不存在
  提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

我使用了以下示例

where FIND_IN_SET ('US', country_codes) and  
where FIND_IN_SET ('"US"', country_codes)

表如下

COUNTRY_CODES
{US, CA}
{US, CA, UT}
{FR, BG, ET}

    and want to use for group by country_codes where as it should consider     COUNTRY_CODES
        {US, CA}
        {US, CA, UT} as same country as it is coming in the query
where as group by consider it as different country

1 个答案:

答案 0 :(得分:2)

此错误输出严重类似于您正在运行Postgres,不是 MySQL。

如果canSelect列实际上是Postgres数组,则只需使用以下内容:

@Input() canSelect?: boolean = false;

如果您确实将CSV数据存储在字符串列中,那么我建议改用以下逻辑:

<div [attr.matRipple]="canSelect ? '' : null"> select </div>

要查看上述逻辑的作用,请考虑您要匹配以下国家/地区代码的CSV列表:

country_codes

变成

WHERE country_codes @> ARRAY['US']::varchar[]

然后,很明显,该CSV字符串中包含WHERE ',' || country_codes || ',' LIKE '%,US,%' 。请注意,应避免将CSV数据直接存储在SQL表中。