Мне нужно объединить 2 int и столбец varchar в plan_no, чтобы он выглядел так

Любая помощь приветствуется.


Вам нужно сделать конверсии:
select *, cast(lot as varchar(255)) + '-' +forester + '-' +cast([year] as varchar(5)) as plan_no
from table t;
Вы можете изменить свой DDL:
alter table t
add plan_no as (cast(lot as varchar(255)) + '-' +forester + '-' +cast([year] as varchar(5)))
Редактировать :
update t
set plan_no = cast(lot as varchar(255)) + '-' +forester + '-' +cast([year] as varchar(5))
where plan_no is null;
спасибо, но мне нужны данные, вставленные в столбец plan_no
Здесь мы можем попробовать использовать CONVERT для преобразования числовых полей в текст:
SELECT
CONVERT(varchar(10), lot) + '-' + forester + '-' +
CONVERT(varchar(10), year) AS plan_no
FROM yourTable;
Если вам нужно обновление, просто используйте:
UPDATE yourTable
SET plan_no = CONVERT(varchar(10), lot) + '-' + forester + '-' +
CONVERT(varchar(10), year);
это тоже работает, но мне нужно вставить его в столбец
@ScottSmith Нет, вообще-то не надо. Для этого создайте вычисляемый столбец, который будет автоматически включать любые изменения, внесенные в «поддерживающие» столбцы. Прежде чем это сделать, внимательно рассмотрите свои требования. Что произойдет, если лот> 9999? Что будет, если лот <1000? Если вам нужен формат фиксированной длины, вам необходимо соответствующим образом спланировать его.
Я думаю, вы хотите обновить данные в своей текущей таблице:
UPDATE TableName
SET plan_no = cast(lot as nvarchar(50)) + '-' + forester + '-' + cast([year] as nvarchar(50))
Обратите внимание: если столбцы лота, лесника или года могут содержать нули, вам необходимо обернуть значения функцией ISNULL().
преобразовать два целых числа в varchar, а затем объединить