Как обновить нулевое значение в столбце - Microsoft Visual Studio - PullRequest
0 голосов
/ 21 апреля 2020
--Create sample table for illustration of issue 

CREATE TABLE SAMPLETABLE ( 
[Order_ID] int,
[Individual_ID] int,
[SAMPLECOLUMN] varchar(50), 
[FACILITY] int,
[ORDERCODE] int
) 
GO 

--Populate column with values including null for sample column

INSERT INTO 
SELECT 
TABLEX.TABLE_ID AS [Individual_ID],
TABLEX.ORDER_ID AS [Order_ID],
NULL AS [SAMPLECOLUMN],
TABLEX.FACILITY_ID AS [FACILITY],
TABLEX.ORDERCODE AS [ORDERCODE]
FROM TABLEX 

--UPDATE NULL values of SAMPLECOLUMN with string values 
UPDATE SAMPLETABLE
SET
SAMPLETABLE.SAMPLECOLUMN = CASE WHEN SAMPLETABLE.ORDERCODE IN ('1') THEN 'THISWILLBETHESTRING'
END
FROM SAMPLETABLE
WHERE SAMPLETABLE.SAMPLECOLUMN IS NULL

Я пытаюсь заменить нулевые значения, которые я изначально заполнил в своей таблице, с помощью оператора update. Я получаю сообщение об ошибке: «Преобразование не удалось при преобразовании значения varchar« THISWILLBETHESTRING », поскольку null имеет тип данных int, тогда как значения, которые я хочу использовать для обновления, являются строковыми. Имейте в виду, что в операторе обновления SAMPLETABLE.ORDERCODE происходит из той же таблицы, которую я обновляю.

Вот DDL, чтобы проиллюстрировать проблему:

-- DDL and sample data, start
DECLARE @start TABLE
(ID INT IDENTITY PRIMARY KEY,
data VARCHAR(20) NULL,
ordercode int);

INSERT INTO @start ([data], [ordercode])
VALUES
(NULL, '1')
,(NULL, '1')
,(NULL, '2');

-- DDL and sample data, end

SELECT *
FROM @start;

DECLARE @end TABLE
(ID INT IDENTITY PRIMARY KEY,
data VARCHAR(20) NULL,
ordercode int);

INSERT INTO @end ([data], [ordercode])
VALUES
('STRINGVALUEIWANT', '1')
,('STRINGVALUEIWANT', '1')
,('ANOTHERSTRING', '2');

-- DDL and sample data population, end
SELECT *
FROM @end;
...