1

我有一些复杂的字符串替换,我只被允许只读访问。

我想要几列,每列都依赖于前一列,这样我就可以查看我的substringcharindex函数是否正确。

基本上是这样的:

DECLARE @myvar NVARCHAR(100) = 'ThisIsMyTest'

SELECT REPLACE(@myvar, 'My', 'Our') AS Part1
    ,Part1 + ' added to the end'

我希望第二列的输出为:

ThisIsOurTest added to the end

这是我想要完成的一个极其简化的版本,所以我正在寻找这个概念。我不需要这个答案:

SELECT REPLACE(@myvar, 'My', 'Our') as Part1, REPLACE(@myvar, 'My', 'Our') + ' added to the end'

因为这就是我现在正在做的事情。

4

1 回答 1

1

在 SQL Server 中,一种选择使用横向连接。它们在这种情况下很方便,因为“下一个”连接可以访问前一个连接生成的数据集。基本上,您可以将每个中间计算放在一个单独的(标量)子查询中。

从您的简化示例开始,这将是:

select t1.part1, t2.part2
from (values (replace(@myvar, 'My', 'Our'))) t1(part1)
cross apply (values (t1.part1 + ' added to the end')) t2(part2)
于 2020-09-30T21:18:27.003 回答