Запрос SQL Server с использованием временной переменной - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу использовать этот код, используя временную переменную, пожалуйста.

enter image description here

SELECT *
FROM Customers

DECLARE @name VARCHAR(50)
DECLARE @salary INT

CREATE TABLE #Result1 (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;

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Попробуйте это ..

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
0 голосов
/ 03 декабря 2018

Полагаю, вы хотите использовать переменные таблицы вместо временных таблиц.Вот ваш отредактированный код: -

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;
0 голосов
/ 03 декабря 2018

Попробуйте это

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

Результат

ID  Name        Age
-------------------
1   Abccd_5     23
2   Abccderdf   42
3   Abccd_5     64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...