拼接子串的T-SQL查询转PostgreSQL提示函数不存在如何解决
错误原因
PostgreSQL 内置的 RIGHT()、LEFT() 字符串截取函数仅支持字符串类型作为入参,你代码中的 account_no 字段是 bigint 数值类型,直接传入 RIGHT() 函数会触发类型不匹配报错。
适配PostgreSQL的查询语句
SELECT *, CONCAT( RIGHT(account_no::varchar, 4), RIGHT(customer_id, 5) ) AS "password for my diplomo" FROM account_info;
调整说明
- 新增
::varchar类型转换语法,将bigint类型的account_no强制转为字符串,满足RIGHT()函数的入参要求,转换后截取后4位的逻辑和原T-SQL完全一致 customer_id本身为varchar类型,无需额外调整CONCAT()函数、双引号别名的用法PostgreSQL原生支持,不需要修改- 若需要兼容SQL标准写法,也可以将类型转换逻辑替换为
CAST(account_no AS varchar),执行效果完全相同
内容的提问来源于stack exchange,提问作者Pandibabu
相关产品推荐
相关产品推荐

