如何使用 npgsql 在数组中进行搜索?
How to search in an array with npgsql?
我有一个数组列我想搜索。
搜索词如下:
WHERE 数组['tag1','tag2'] <@ tags
如果我这样搜索(其中 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 的参数发送。例如:
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" });
我有一个数组列我想搜索。
搜索词如下:
WHERE 数组['tag1','tag2'] <@ tags
如果我这样搜索(其中 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 的参数发送。例如:
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" });