You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求PSQL转TSQL等价实现:Level与Connect By替代方案

PostgreSQL转SQL Server等价语句实现

原PostgreSQL语句用于生成1到14的连续数字序列,再将其格式化为带前缀P的两位字符串(位数不足时前面补0)。以下是对应的TSQL实现方案:

核心转换说明

  • PostgreSQL中通过level + connect by level <= N生成连续数字序列的写法,在SQL Server里可以用**递归CTE(公共表表达式)**直接替代,这是最常用的等价实现方式。
  • 你已经明确可以用RIGHT(REPLICATE('0', 2) + CAST(lvl AS VARCHAR), 2)来替代PostgreSQL的lpad(lvl, length('__'), '0')(length('__')结果为2),下面的代码将直接沿用这个逻辑。

完整TSQL语句

SELECT 'P' + RIGHT(REPLICATE('0', 2) + CAST(lvl AS VARCHAR), 2)
FROM (
    WITH SequenceCTE AS (
        SELECT 1 AS lvl
        UNION ALL
        SELECT lvl + 1 FROM SequenceCTE WHERE lvl < 14
    )
    SELECT lvl FROM SequenceCTE
) AS NumberSeq

执行结果

P01
P02
P03
P04
P05
P06
P07
P08
P09
P10
P11
P12
P13
P14

(注:原结果中缺失P03应为输入笔误,按代码逻辑会生成完整的1到14序列)

内容的提问来源于stack exchange,提问作者user27939296

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:52:10