Использование SQL внутри select - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь превратить свой IP-адрес в набор из 3-значных чисел, оставленных с добавлением 0. Я легко могу сделать это так:

DECLARE @merged VARCHAR(15);
SELECT @marged = COALESCE(@merged + '.', '') + RIGHT('000' + [value], 3)
FROM string_split(ip_address, '.');

Но теперь я хочу сделать что-то вродечто в более широком операторе select.

SELECT Name, @merged AS IP_Address, Mac_Address
FROM some_table

Я не уверен, как получить часть @merged, хотя, когда я запрашиваю полную таблицу.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

У вас есть определенная проблема с IP-адресами, поэтому вы можете использовать parse_name():

SELECT Name, 
       (left('000' + parse_name(Mac_Address, 4), 3) + '.' +
        left('000' + parse_name(Mac_Address, 3), 3) + '.' +
        left('000' + parse_name(Mac_Address, 2), 3) + '.' +
        left('000' + parse_name(Mac_Address, 1), 3) 
       ) as ip_address,
      Mac_Address
FROM some_table;

Это будет проще и эффективнее, чем в других решениях, использующих агрегирование строк.

...