在 SQL 中创建视图时从字符串中删除最后 5 个字符
Removing last 5 character from string when creating View in SQL
我正在尝试删除 table dev.roles
中 name
字段的最后 5 个字符,它们总是 _role
([=21= 中的每个角色名称] 以 _role
) 结尾。但是我写的 SQL 查询总是转到 else 语句并为整个 users
列打印出 NULL
。感谢任何反馈!
CREATE OR REPLACE VIEW dev.permissions
AS SELECT
CASE
WHEN rls.name::text ~~* '_role'::text THEN ''::text
ELSE NULL::text
END AS "users",
ap.p_create as "insert",
ap.p_read as "select",
ap.p_update as "update",
ap.p_delete as "delete"
FROM dev.auth_permissions ap
LEFT JOIN dev.roles rls ON rls.id = ap.role_id
您可以使用 replace()
:
select replace(rls.name, '_role', '')
或者,如果您知道它们始终存在:
select left(rls.name, length(rls.name) - 5)
我正在尝试删除 table dev.roles
中 name
字段的最后 5 个字符,它们总是 _role
([=21= 中的每个角色名称] 以 _role
) 结尾。但是我写的 SQL 查询总是转到 else 语句并为整个 users
列打印出 NULL
。感谢任何反馈!
CREATE OR REPLACE VIEW dev.permissions
AS SELECT
CASE
WHEN rls.name::text ~~* '_role'::text THEN ''::text
ELSE NULL::text
END AS "users",
ap.p_create as "insert",
ap.p_read as "select",
ap.p_update as "update",
ap.p_delete as "delete"
FROM dev.auth_permissions ap
LEFT JOIN dev.roles rls ON rls.id = ap.role_id
您可以使用 replace()
:
select replace(rls.name, '_role', '')
或者,如果您知道它们始终存在:
select left(rls.name, length(rls.name) - 5)