Sql server: взять расширение адреса в другой столбец

У меня есть несколько номеров адресов, которые мне нужно разделить, в настоящее время формат такой:

col a: 42A
col b: NULL

Я хочу поместить расширение адреса в столбец B и удалить его из A. Какой самый простой способ сделать это в MS Sql? Таким образом, оператор обновления, который удаляет значение (в примере: 'A') из столбца A, помещает их в столбец B и сохраняет число в A. -

Каков ожидаемый результат?

Jens 10.09.2018 08:34

Можем ли мы предположить, что вы имеете в виду обновление строк? Где столбец B - ПУСТО, но столбец A - НЕ ПУСТО.

Paul Maxwell 10.09.2018 08:35

Я имею в виду действительно обновление, извинения! Таким образом, оператор обновления, который удаляет значение (в примере: 'A') из столбца A, помещает его в столбец B и сохраняет число в A.

stunnie 10.09.2018 08:36

каковы правила и состояние вашего split

Squirrel 10.09.2018 08:36

Пожалуйста, поделитесь своими необработанными данными и ожидаемым результатом с условиями

gulshan arora 10.09.2018 08:39

обновить таблицу set cola = substring (cola, 1, len (cola) -1), colb = substring (cola, len (cola), len (cola)), где colb равно нулю

Raghavendra 10.09.2018 08:51
0
6
46
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Просто используйте обновление, но сначала установите colb, затем вы можете установить cola на null.

например

create table yourtable (
    cola varchar(10), colb varchar(10)
    )
;

insert into yourtable
values ('42a', NULL)
;

select  *
from yourtable
;

| cola | colb |
+------+------+
| 42a  | NULL |


update yourtable
set colb = cola
, cola = NULL
where cola IS NOT NULL
and colb IS NULL
;

select
*
from yourtable
;

| cola | colb |
+------+------+
| NULL | 42a  |

Привет! Спасибо за ответ, я думаю, что я был неясен, я хочу просто переместить письмо в другой столбец. Например, в COLA = 42A и COLB должно быть: 'A' после оператора, а COLA должно быть просто 42. (длина чисел может быть переменной).

stunnie 10.09.2018 08:50

Если мы предположим, что структура ColA является постоянной и всегда имеет 2 цифры плюс один символ, вы можете просто запустить этот запрос:

UPDATE [yourTable] SET COLA = SUBSTRING(COLA,1,2) , COLB = substring(COLA,3,1)
Ответ принят как подходящий

Возможно, ниже запрос поможет вам.

create table yourtable (
    cola varchar(10), colb varchar(10)
    )
;

insert into yourtable
values ('42a', NULL)

insert into yourtable
values ('42aa', NULL)

insert into yourtable
values ('42aaa', NULL)

insert into yourtable
values ('442aaa', NULL)


UPDATE yourtable
SET cola = LEFT(cola, PATINDEX('%[0-9][^0-9]%', cola )) 
,colb= LTRIM(RIGHT(cola, LEN(cola) - PATINDEX('%[0-9][^0-9]%', cola ))) 

select  *
from yourtable

Вы можете попробовать следующее:

CREATE TABLE [yourtable]
([cola] VARCHAR(10), 
 [colb] VARCHAR(10)
);

INSERT INTO [yourtable]
VALUES
('42a', 
 NULL
);


SELECT *
FROM   [yourtable];

UPDATE [yourtable]
  SET  
     [colb] = RIGHT([cola], 1), 
     [cola] = LEFT([cola], 2)
WHERE  [cola] = '42a';

Ответ от @Nikunj, наверное, самое универсальное решение.

Dan Stef 10.09.2018 08:53

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