【问题标题】:How to search in an array with npgsql?如何使用 npgsql 在数组中搜索?
【发布时间】:2019-02-20 19:56:25
【问题描述】:

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

搜索词是这样的:

WHERE ARRAY['tag1','tag2']

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

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);

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

如果我这样搜索:

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["+variable1+"] <@ tags)  LIMIT 100", conn);

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

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

我如何格式化我的搜索?

【问题讨论】:

    标签: npgsql


    【解决方案1】:

    与其尝试传递数组的元素,不如将数组本身作为 Npgsql 的参数发送。例如:

    var cmd = new NpgsqlCommand("SELECT id,name FROM wincorrespondants WHERE (name ILIKE @donnee) OR (@arr <@ tags)  LIMIT 100", conn);
    cmd.Parameters.AddWithValue("arr", new[] {"tag1", "tag2" });
    

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 2018-11-12
      相关资源
      最近更新 更多