可以在一个选择中多次使用动态列吗?

问题描述

我进行了一些复杂的字符串替换,并且只允许我进行只读访问。

我想有几列,每列都依赖于上一列,以便查看我的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,'Our') as Part1,REPLACE(@myvar,'Our') + ' added to the end'

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

解决方法

在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)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...