在SQL中,查询字符串中的撇号
和引号
有哪些角色?如何替换撇号
?主要关注它们在PostgreSQL中的特定作用。如果省略撇号
,会导致SQL查询出现问题,例如:
SELECT role FROM "USER_ROLES" WHERE "USER_ROLES".login = admin;
当管理员是一个值时,会出现“列'admin'不存在”的错误。写成'admin'可以解决这个问题。
SELECT role FROM "USER_ROLES" WHERE "USER_ROLES".login = 'admin';
实际问题是在另一个上下文中使用查询:
<module-option name="rolesQuery" value="SELECT 'role', 'Roles' FROM "USER_ROLES" 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。