Snowflake中Teradata USERENV('LANG')函数的等效替代方案咨询
Teradata USERENV('LANG') 在 Snowflake 中的替代方案
Teradata 里的 USERENV('LANG') 用于获取当前会话的默认语言设置,在 Snowflake 中可以直接用 CURRENT_LANGUAGE() 函数替代,它会返回当前会话的语言标识(比如 'en-US'、'zh-CN')。另外,SESSION_CONTEXT('LANGUAGE') 也能达到同样的效果。
示例查询转换
原 Teradata 查询:
SELECT
A.EMPID, A.EMP_LANGUAGE,
B.EMP_SAL
FROM EMPLOYEE A,
EMP_SALARY B
WHERE A.EMP_ID = B.EMP_ID
AND A.EMP_LANGUAGE = USERENV('LANG');
对应的 Snowflake 查询:
SELECT A.EMPID, A.EMP_LANGUAGE, B.EMP_SAL FROM EMPLOYEE A JOIN EMP_SALARY B ON A.EMP_ID = B.EMP_ID AND A.EMP_LANGUAGE = CURRENT_LANGUAGE();
如果习惯用 SESSION_CONTEXT,也可以这样写:
SELECT A.EMPID, A.EMP_LANGUAGE, B.EMP_SAL FROM EMPLOYEE A JOIN EMP_SALARY B ON A.EMP_ID = B.EMP_ID AND A.EMP_LANGUAGE = SESSION_CONTEXT('LANGUAGE');
补充说明
如果需要手动指定会话语言,执行以下语句即可:
ALTER SESSION SET LANGUAGE = 'zh-CN';
执行后,CURRENT_LANGUAGE() 就会返回设置的语言标识。
内容的提问来源于stack exchange,提问作者Rocky1989
相关产品推荐
相关产品推荐

