SSMS可运行的SQL在Databricks报错,求PostgreSQL实现方法
在PostgreSQL中实现原SQL逻辑的修正方案
核心修正点
- 替换不支持的
nvarchar类型:PostgreSQL不存在nvarchar类型,其varchar(包括带长度限制的varchar(n))原生支持Unicode字符,功能完全等价于SQL Server的nvarchar,直接将所有nvarchar替换为varchar即可。 - 修正字符串连接语法:SQL Server用
+做字符串连接,但PostgreSQL中+是算术运算符,字符串连接需改用||或直接通过concat函数传递多参数(更推荐后者,避免运算符混用导致的错误)。
修改后的SQL片段
cast(concat(c.client_id, '::', kr.name) as varchar(2048)) as role_hierarchy, cast('' as varchar(36)) as child_role_id, cast('' as varchar(36)) as child_role_realm, cast('' as varchar(255)) as child_client_role_client_id, cast('' as varchar(255)) as child_role_name,
补充说明
- 原代码中
'::' + kr.name的写法在PostgreSQL中会触发算术运算错误,改为将'::'和kr.name作为独立参数传入concat函数,确保字符串连接逻辑正确。 - PostgreSQL中
cast('' as varchar(n))的行为与SQL Server一致,会生成指定长度的空字符串。
内容的提问来源于stack exchange,提问作者Desert Spider
相关产品推荐
相关产品推荐

