SQL Подстрока сервера выдает ошибку «множественные результаты» - PullRequest
0 голосов
/ 19 февраля 2020

Я использую Microsoft SQL Server 2016.

У меня есть столбец, который называется Failover и выглядит как его:

  $D$Failov:12345:54362:28564      
  $D$Failov:12345:
  $D$Failov:86905:45634

Я хочу этот номер, поэтому я использую:

select substring(failover, 10, 5) 
from dbo.f009
where failover like '$D$Failov:%'

Работает нормально, но если мне нужен второй столбец с именем Account, он вылетал с несколькими результатами ...

Select 
    account,
    (Select substring(failover, 10, 5) AS "1.Result"
     from dbo.f009 
     where Failover like '$D$Failov:%')
from 
    f009
where 
    Failover like '$D$Failov:%'

Как это исправить?

Есть ли простой способ взять второе число и третье? Я могу сделать это с:

substring(failover, 16, 5), substring(failover, 22, 5)

et c et c, но он не хочет повторяться.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Вы можете повторить строковые операции:

select substring(failover, 11, 5) as num1,
       substring(failover, 17, 5) as num2,
       substring(failover, 23, 5) as num3       
from dbo.f009
where failover like '$D$Failov:%';

Вы также можете сформулировать это как рекурсивный CTE, если у вас есть неопределенное количество значений:

with t as (
      select * from (values ('$D$Failov:12345:54362:28564'), ('$D$Failov:12345:')) v(failover)
     ),
     cte as (
      select failover, convert(varchar(max), NULL) as acct, convert(varchar(max), stuff(failover, 1, 10, '')) as rest, 0 as lev
      from t
      union all
      select failover, left(rest, 5), stuff(rest, 1, 6, ''), lev + 1
      from cte
      where rest > ':'
     )
select failover, acct, lev
from cte
where lev > 0;

Здесь - это дБ <> скрипка.

0 голосов
/ 19 февраля 2020

Кажется, что вы можете достичь с помощью простого запроса:

Select account, substring(failover,10,5) AS "1.Result"
from dbo.f009 
where Failover like '$D$Failov:%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...