0

我想在 select 中使用 equals 可以吗?

选择示例

DECLARE @NAME_SURNAME varchar(200);
SELECT
(CASE WHEN (PLP.NAME +' '+ PLP.SURNAME) != @NAME_SURNAME THEN (SET @NAME_SURNAME = (PLP.NAME +' '+ PLP.SURNAME))  END) AS 'LP.', 

问题:

(SET @NAME_SURNAME = (PLP.NAME +' '+ PLP.SURNAME))
4

3 回答 3

2

您的 SQL 不太合理。您似乎试图同时设置一个变量并返回一个值(作为“LP。”)。这是不允许的。这是文档中的注释:

包含变量赋值的 SELECT 语句也不能用于执行典型的结果集检索操作。

使用 a 设置变量的正确语法select是:

select @NAME_SURNAME = (CASE WHEN (PLP.NAME +' '+ PLP.SURNAME) !=  @NAME_SURNAME
                             THEN (PLP.NAME +' '+ PLP.SURNAME)
                             else @NAME_SURNAME
                        end)

也就是说,语句中set不允许使用关键字。select

于 2013-05-08T14:12:05.017 回答
1

我认为你不需要SET在这个声明中使用这个词。

(@NAME_SURNAME = (PLP.NAME +' '+ PLP.SURNAME))
于 2013-05-08T14:10:37.973 回答
1
SELECT @NAME_SURNAME = 
    CASE WHEN PLP.NAME +' '+ PLP.SURNAME != @NAME_SURNAME 
    THEN PLP.NAME +' '+ PLP.SURNAME
    ELSE @NAME_SURNAME
    END AS 'LP.'

但这不会总是选择相同的吗?

于 2013-05-08T14:12:17.803 回答