sql - PostgreSQL 中的撇号和引号 - 如何替换撇号?

标签 sql postgresql syntax case-sensitive

撇号引号在SQL查询字符串中有什么作用?如何替换撇号

主要兴趣是他们在 PostgreSQL 中的特定角色。

离开 撇号 会弄乱 SQL 查询,例如:

SELECT role FROM "USER_ROLES" WHERE "USER_ROLES".login = admin;

当 admin 是一个值时,得到一个 'column' admin does not exist 错误。编写 'admin' 可以纠正问题:

SELECT role FROM "USER_ROLES" WHERE "USER_ROLES".login = 'admin';

实际问题是在另一个上下文中使用查询:

<module-option name="rolesQuery" value="SELECT 'role', 'Roles' FROM &quot;USER_ROLES&quot; WHERE login='?'"/>

根据要求,表定义为:

CREATE TABLE "USER_ROLES" (
  login text NOT NULL,
  role text,
  CONSTRAINT "USER_ROLES_pkey" PRIMARY KEY (login ),
  CONSTRAINT "USER_ROLES_login_fkey" FOREIGN KEY (login)
      REFERENCES "USER" (login) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

PostgreSQL 版本 9.1。

最佳答案

您可以将单引号 (') 替换为dollar-quoting在 PostgreSQL 中避免它们在不同上下文中的特殊含义。 (不过不确定美元符号是否也有特殊含义):

<module-option name="rolesQuery" value="SELECT role FROM &quot;USER_ROLES&quot; WHERE login = $$?$$"/>

另一个想法是使用 ' 代替单引号:

<module-option name="rolesQuery" value="SELECT role FROM &quot;USER_ROLES&quot; WHERE login = &apos;?&apos;"/>

关于sql - PostgreSQL 中的撇号和引号 - 如何替换撇号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13742585/

相关文章:

sql - 来自嵌套连接的单行

php - 如何更新mysql中的表单选择2行值

java - PostgreSQL 存储过程不工作

sql - Postgres 使用 jsonb 数组按价格从低到高排序

Python变量在函数之外语法错误?

python - 我的代码有什么问题?我是Python 3.3的新手

mysql查询语法错误,mysql8.0之后UNION之前不能再用LIMIT了?

mysql - 如何使用 FULLINDEX 对 MySQL 中的两个或更多列进行 MATCH AGAINST?

postgresql - 从间隔表/Cast 记录中提取秒数到间隔?

c++ - 为什么这些简单的函数会给出天文数字大或小的数字?