使用临时变量的SQL Server查询
我想通过使用临时变量来使用这段代码,请建议 试试这个使用临时变量的SQL Server查询,sql,sql-server,variables,cursor,Sql,Sql Server,Variables,Cursor,我想通过使用临时变量来使用这段代码,请建议 试试这个 SELECT ID, IIF(LEN(Name)<=5,Name+'_'+CAST(LEN(Name) AS VARCHAR(10)) ,Name) As Name, Age FROM ( SELECT 1 ID,'Abccd' Name, 23 Age UNION ALL SELECT 2 ID,'Abccderdf' Name, 42 Age UNION ALL SELECT 3 ID,'Abccd' Na
SELECT ID,
IIF(LEN(Name)<=5,Name+'_'+CAST(LEN(Name) AS VARCHAR(10)) ,Name) As Name,
Age
FROM
(
SELECT 1 ID,'Abccd' Name, 23 Age UNION ALL
SELECT 2 ID,'Abccderdf' Name, 42 Age UNION ALL
SELECT 3 ID,'Abccd' Name, 64 Age
)dt
试试这个
SELECT
CASE
WHEN LEN(Name) <= 5
THEN Name + '_' + CAST(LEN(NAME) AS NVARCHAR(5))
ELSE Name
END AS 'Name',
Age
INTO
#Result1
FROM
Customers
SELECT * FROM #Result1
我想您应该使用表变量而不是临时表。以下是您编辑的代码:-
SELECT *
FROM Customers
DECLARE @name VARCHAR(50)
DECLARE @salary INT
declare @Result1 table(Name VARCHAR(50), Salary INT)
DECLARE zxcv CURSOR FOR
SELECT
CASE
WHEN LEN(Name) <= 5
THEN CONCAT(Name, '_', LEN(Name))
ELSE Name
END,
Salary
FROM
Customers;
OPEN zxcv
FETCH NEXT FROM zxcv INTO @name, @salary;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @Result1 (Name, Salary)
VALUES (@name, @salary);
FETCH NEXT FROM zxcv INTO @name, @salary;
END
CLOSE zxcv;
DEALLOCATE zxcv;
SELECT * FROM @Result1;
这是编码的,并生成您提供的结果-您有什么问题?我知道,代码正在生成输出结果。。。但我想用临时变量打印相同的结果。。。你能帮忙吗?sameI不知道这个问题或你最后的评论是什么意思。你必须想出一种方法来描述你使用临时变量的意思。顺便说一句,我知道临时变量是什么,或者可能扩展问题来描述你试图实现的目标,而不是你不可接受的尝试。更改临时表逻辑以使用临时变量让我们知道你是否是临时变量寻找。
SELECT
CASE
WHEN LEN(Name) <= 5
THEN Name + '_' + CAST(LEN(NAME) AS NVARCHAR(5))
ELSE Name
END AS 'Name',
Age
INTO
#Result1
FROM
Customers
SELECT * FROM #Result1
SELECT *
FROM Customers
DECLARE @name VARCHAR(50)
DECLARE @salary INT
declare @Result1 table(Name VARCHAR(50), Salary INT)
DECLARE zxcv CURSOR FOR
SELECT
CASE
WHEN LEN(Name) <= 5
THEN CONCAT(Name, '_', LEN(Name))
ELSE Name
END,
Salary
FROM
Customers;
OPEN zxcv
FETCH NEXT FROM zxcv INTO @name, @salary;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @Result1 (Name, Salary)
VALUES (@name, @salary);
FETCH NEXT FROM zxcv INTO @name, @salary;
END
CLOSE zxcv;
DEALLOCATE zxcv;
SELECT * FROM @Result1;