SQL Подстрока сервера - PullRequest
       5

SQL Подстрока сервера

0 голосов
/ 16 января 2020

Не могли бы вы помочь получить следующую подстроку.

У меня есть такие значения, как

1.1
1.10.1
1.2.2.1

ожидаемый результат (необходимо исключить цифры после второй точки)

1.1
1.10
1.2

Ответы [ 2 ]

3 голосов
/ 16 января 2020

Вот один подход, который демонстрирует использование CROSS APPLY и немного XML

Пример

Declare @YourTable Table ([SomeCol] varchar(50))  Insert Into @YourTable Values 
 ('1.1')
,('1.10.1')
,('1.2.2.1')

Select A.* 
      ,NewValue=concat(
               XMLData.value('/x[1]','varchar(50)')
               ,'.'+XMLData.value('/x[2]','varchar(50)')
               )
 From  @YourTable A
 Cross Apply (  values (Cast('<x>' + replace(SomeCol,'.','</x><x>')+'</x>' as xml)) ) B(XMLData)

Возвращает

SomeCol   NewValue
1.1       1.1
1.10.1    1.10
1.2.2.1   1.2

РЕДАКТИРОВАТЬ - просто еще один вариант, используя parsename()

Select A.* 
      ,NewValue=reverse(parsename(reverse(SomeCol),2)
              +'.'
              +parsename(reverse(SomeCol),1)
              )
From  @YourTable A
0 голосов
/ 16 января 2020

Простейшее значение - использовать комбинацию LEFT() & CHARINDEX():

SELECT LEFT(col, CHARINDEX('.', col + '.', CHARINDEX('.', col + '.') + 1 ) - 1)
FROM table t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...