SQL Server CHAR函数在PostgreSQL中的等价实现是什么?
PostgreSQL中替代SQL Server CHAR()函数的方案
嗨~我来帮你搞定这个问题!在PostgreSQL里,对应SQL Server CHAR(integer_expression)的等价函数是**CHR()**,用法几乎完全一致,能完美匹配你的需求。
基础用法对比
- SQL Server写法:
SELECT CHAR(65); -- 返回 'A' SELECT CHAR(101); -- 返回 'e' - PostgreSQL等价写法:
SELECT CHR(65); -- 同样返回 'A' SELECT CHR(101); -- 同样返回 'e'
你遇到的错误原因解析
你尝试的SELECT E'\0x65'之所以报错,是因为PostgreSQL的转义规则和你预期的不一样:
\0在PostgreSQL的转义字符串里会被解析为ASCII空字符(0x00),而UTF-8编码的数据库不允许存储空字节,所以直接触发了invalid byte sequence错误;- 正确的十六进制转义写法应该是
E'\x65'(去掉开头的0),这样能得到字符'e',但这种写法远不如CHR(101)直观,毕竟和SQL Server的CHAR用法对齐的话,CHR()才是最优解。
额外小提示
如果需要拼接多个字符(比如SQL Server里的CHAR(65)+CHAR(66)),PostgreSQL里用||做字符串拼接即可:
SELECT CHR(65) || CHR(66); -- 返回 'AB'
内容的提问来源于stack exchange,提问作者Jonas Stawski
相关产品推荐
相关产品推荐

