Tôi có một DB postgresql và tôi muốn truy vấn bảng "Vị trí" để truy xuất tên của tất cả các vị trí khớp với tên được nhập bởi người dùng. Tên cột là "LocationName". Tôi đang sử dụng ASP.net với C#.như tuyên bố cho npgsql sử dụng tham số
NpgsqlConnection con = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ToString());
NpgsqlCommand cmd = new NpgsqlCommand("Select * from \"Locations\" where \"LocationName\" LIKE \"%@loc_name%\"", con);
cmd.Parameters.AddWithValue("@loc_name", Location_Name);
NpgsqlDataReader reader = cmd.ExecuteReader();
tôi nhận được ngoại lệ này:
Npgsql.NpgsqlException: ERROR: 42703: column "%((E'My place'))%" does not exist
Tôi đã thử chạy các truy vấn mà không sử dụng%, nhưng nó không hoạt động. Tôi cũng đã cố gắng sử dụng + và & như đưa ra dưới đây nhưng điều đó không làm việc, hoặc:
string query = "Select \"LocationName\" from \"Locations\" where \"LocationName\" LIKE '%'+ :loc_name +'%'";
với dòng trên, tôi nhận được ngoại lệ này:
Npgsql.NpgsqlException: ERROR: 42725: operator is not unique: unknown + unknown
Đối với bạn truy vấn cuối cùng: postgres đang sử dụng toán tử || để ghép các chuỗi, không phải là dấu cộng (+). – alfoks