如何将SQL查询中的嵌套||连接运算符替换为CONCAT函数?
转换方案
原需替换的SQL片段
(( TIME .MONTH_EN || N' ') || cast( TIME .CURRENT_YEAR as varchar (4))) as Month__caption_, (( TIMEQUARTER.QUARTER_EN || N' ') || cast( TIME .CURRENT_YEAR as varchar (4))) as Quarter__caption_
转换后的SQL片段
CONCAT(CONCAT(TIME.MONTH_EN, N' '), cast(TIME.CURRENT_YEAR as varchar(4))) as Month__caption_, CONCAT(CONCAT(TIMEQUARTER.QUARTER_EN, N' '), cast(TIME.CURRENT_YEAR as varchar(4))) as Quarter__caption_
完整的转换后SQL语句
SQL_query=""" select TIME.CURRENT_YEAR as Year1, TIME.QUARTER_KEY as Quarter_key, CONCAT(CONCAT(TIME.MONTH_EN, N' '), cast(TIME.CURRENT_YEAR as varchar(4))) as Month__caption_, CONCAT(CONCAT(TIMEQUARTER.QUARTER_EN, N' '), cast(TIME.CURRENT_YEAR as varchar(4))) as Quarter__caption_ from [GOSALESDW].TIME TIME, [GOSALESDW].TIMEQUARTER TIMEQUARTER where (TIME.QUARTER_KEY = TIMEQUARTER.QUARTER_KEY) """
额外小提示
其实多数支持CONCAT函数的SQL数据库(比如SQL Server)都允许直接传入多个参数,你也可以把嵌套的CONCAT简化成更简洁的形式,效果完全一致:
CONCAT(TIME.MONTH_EN, N' ', cast(TIME.CURRENT_YEAR as varchar(4))) as Month__caption_, CONCAT(TIMEQUARTER.QUARTER_EN, N' ', cast(TIME.CURRENT_YEAR as varchar(4))) as Quarter__caption_
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

