在 SQL 中创建视图时从字符串中删除最后 5 个字符

Removing last 5 character from string when creating View in SQL

我正在尝试删除 table dev.rolesname 字段的最后 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)