如何使用npgsql搜索数组?

时间:2019-02-20 19:56:26

标签: npgsql

我有一个要搜索的数组列。

搜索词如下:

WHERE ARRAY ['tag1','tag2'] <@标签

如果我这样搜索(其中donnee是要搜索的文本字符串):

*.pyc

搜索不适用于标签数组,但是如果搜索字符串中有',程序不会崩溃

如果我这样搜索:

string variable1 = string.Empty;

            string[] tags = donnee.Split(',');

            if (tags.Length > 1)
            {
                foreach (string item in tags)
                {
                    variable1 = variable1 + "'" + item + "',";

                }

                variable1 = variable1.Remove(variable1.Length - 1);
            }
            else
            {
                variable1 = variable1 + "'" + tags[0] + "'";
            }


            NpgsqlCommand cmd = new NpgsqlCommand("SELECT id,name FROM wincorrespondants WHERE (name ILIKE @donnee) OR (ARRAY[@var] <@ tags)  LIMIT 100", conn);

            cmd.Parameters.AddWithValue("donnee", "%" + donnee + "%");
            cmd.Parameters.AddWithValue("var", variable1);

如果搜索字符串中有一个',则程序崩溃,但在其他情况下可以运行(程序找到用户正在寻找的名称或带有标签的用户)

如何格式化搜索?

1 个答案:

答案 0 :(得分:1)

您应该尝试将数组本身作为参数从Npgsql发送,而不是尝试传递数组的元素。例如:

updatedAt