PostgreSQL:如何在PostgreSQL数据库中只插入一个反斜杠

本文关键字:PostgreSQL 一个 插入 数据库 | 更新日期: 2023-09-27 17:56:22

>有谁知道如何将单个反斜杠存储到 PostgreSQL 数据库中?

我正在使用 C# 和 Nqgsql 访问 PostgreSQL,我的情况是我想将"1''''0''0''0''0''''1''0"存储到数据库中,数据库字段中的预期字符串将是"1''0''0''0''1''0",也就是说我只需要 db 字段中的一个反斜杠,因此当我从 db 获取数据时, 它在内存中仍将是"1''''0''''0''0''0''''1''0"。但是我的问题是当

内存字符串是"1''''0''0''0''0''1''0"时,存储在db字段中的字符串也是"1''''0''0''0''0''0''1''0",那么当我从db获取数据时,内存字符串将是"1''''''0''0''0''0''0''''0''''0"。

我在 c# 代码中使用的变量设置为以下格式:var a = "1''''0''''0''0''0''''1''''0";var b = @"1''0''0''0''0''1''0";

当存储到 DB 中时,似乎两个变量中的反斜杠都加倍了。如何处理这个问题?

PostgreSQL:如何在PostgreSQL数据库中只插入一个反斜杠

您应该通过使用参数化查询来完全避免这种情况。请参阅在查询中使用参数部分中的 Npgsql:用户手册中的示例。

但是,如果您确实想构造文本查询,则可以使用E''语法,如下所示:

var sql = @"insert into table_name (column_name) values (E'1''0''0''0''1''0')";

此语法独立于服务器或连接配置,如 standard_conforming_strings 。但它是Postgres特有的。

如果您希望代码在不同的数据库引擎之间可移植,则可以在连接后立即发出set standard_conforming_strings=on。然后这有效:

var sql = @"insert into table_name (column_name) values ('1'0'0'0'1'0')";

此选项从 PostgreSQL 9.1 开始默认打开,从 8.2 开始可用。

我也有这个问题。 我能够通过进入数据库的配置并将"standard_conforming_strings"更改为 OFF 来解决它。