jac*_*des 2 sql postgresql syntax case-sensitive
这是在一个查询字符串中的角色apostrophe
和quotation mark
在SQL?如何apostrophe
更换?
主要兴趣是他们在PostgreSQL中的特定角色.
离开apostrophe
了食堂SQL查询,例如,:
SELECT role FROM "USER_ROLES" WHERE "USER_ROLES".login = admin;
Run Code Online (Sandbox Code Playgroud)
当admin是值时,获取'列'管理员不存在错误.写'admin'可以解决问题:
SELECT role FROM "USER_ROLES" WHERE "USER_ROLES".login = 'admin';
Run Code Online (Sandbox Code Playgroud)
实际问题是在另一个上下文中使用查询:
<module-option name="rolesQuery" value="SELECT 'role', 'Roles' FROM "USER_ROLES" WHERE login='?'"/>
Run Code Online (Sandbox Code Playgroud)
根据要求,表定义是:
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
)
Run Code Online (Sandbox Code Playgroud)
PostgreSQL版本9.1.
你可以用PostgreSQL中的美元引用替换单引号('
),以避免它们在不同的上下文中的特殊含义.(不过,不确定美元符号是否也有特殊含义):
<module-option name="rolesQuery" value="SELECT role FROM "USER_ROLES" WHERE login = $$?$$"/>
Run Code Online (Sandbox Code Playgroud)
另一个想法是用来'
代替单引号:
<module-option name="rolesQuery" value="SELECT role FROM "USER_ROLES" WHERE login = '?'"/>
Run Code Online (Sandbox Code Playgroud)