C# 使用参数的npgsql的like语句

C# 使用参数的npgsql的like语句,c#,asp.net,npgsql,C#,Asp.net,Npgsql,我有一个postgresql数据库,我想查询表“Locations”,以检索与用户输入的名称匹配的所有位置的名称。列名为“LocationName”。我将ASP.net与C#一起使用 我得到一个例外: Npgsql.NpgsqlException: ERROR: 42703: column "%((E'My place'))%" does not exist Npgsql.NpgsqlException: ERROR: 42725: operator is

我有一个postgresql数据库,我想查询表“Locations”,以检索与用户输入的名称匹配的所有位置的名称。列名为“LocationName”。我将ASP.net与C#一起使用

我得到一个例外:

Npgsql.NpgsqlException: ERROR: 42703: column "%((E'My place'))%" does not exist
Npgsql.NpgsqlException: ERROR: 42725: operator is not unique: unknown + unknown
我尝试过在不使用%的情况下运行查询,但它不起作用。 我也尝试过使用下面给出的+和(&I),但也不起作用:

string query = "Select \"LocationName\" from \"Locations\" where \"LocationName\" LIKE '%'+ :loc_name +'%'";
通过上面的一行,我得到了这个例外:

Npgsql.NpgsqlException: ERROR: 42703: column "%((E'My place'))%" does not exist
Npgsql.NpgsqlException: ERROR: 42725: operator is not unique: unknown + unknown
你应该使用

NpgsqlCommand cmd = new NpgsqlCommand("Select * from \"Locations\" where \"LocationName\" LIKE @loc_name", con);
cmd.Parameters.AddWithValue("@loc_name", "%" + Location_Name + "%");
您插入的引号太多:Postgre将双引号之间的字符串解释为字段/表名。让参数执行转义字符串任务

注意:要连接Postgre中的字符串,应使用
|
运算符,请参阅。所以您的最后一个查询应该是

string query = "Select \"LocationName\" from \"Locations\" where \"LocationName\" LIKE '%' || :loc_name || '%'";

最后一个查询:postgres正在使用运算符| |连接字符串,而不是加号(+)。它成功了!!现在它返回所有匹配的行。感谢@trippino的帮助和如此快速的响应。很高兴帮助您。欢迎使用堆栈溢出:)