SQL Server 2008 Alter Table Concatenate

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

SQL Server 2008 Alter Table Concatenate

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

преобразовать два целых числа в varchar, а затем объединить

maulik kansara 23.07.2018 15:03
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
42
3

Ответы 3

Вам нужно сделать конверсии:

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

Scott Smith 23.07.2018 15:08

Здесь мы можем попробовать использовать 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);

это тоже работает, но мне нужно вставить его в столбец

Scott Smith 23.07.2018 15:09

@ScottSmith Нет, вообще-то не надо. Для этого создайте вычисляемый столбец, который будет автоматически включать любые изменения, внесенные в «поддерживающие» столбцы. Прежде чем это сделать, внимательно рассмотрите свои требования. Что произойдет, если лот> 9999? Что будет, если лот <1000? Если вам нужен формат фиксированной длины, вам необходимо соответствующим образом спланировать его.

SMor 23.07.2018 19:48

Я думаю, вы хотите обновить данные в своей текущей таблице:

UPDATE TableName
SET plan_no = cast(lot as nvarchar(50)) + '-' + forester + '-' + cast([year] as nvarchar(50))

Обратите внимание: если столбцы лота, лесника или года могут содержать нули, вам необходимо обернуть значения функцией ISNULL().

Другие вопросы по теме