подстрока nvarchar var, которая имеет один и тот же критерий символа несколько раз - PullRequest
0 голосов
/ 27 февраля 2020

Внутри sql хранимой процедуры я хочу подстроку 'x', которая равна nvarchar (max).

x может принимать значения вроде:

1.000.232 or 2.1110.23444.456

Я хочу сохранить в 'z', который также является nvarchar (max), только средние числа между первым и последним '.'

Например:

if x=1.000.232 then z=000
if x=2.1110.23444.456 then z=1110.23444

1 Ответ

1 голос
/ 27 февраля 2020

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

DECLARE
    @x                VARCHAR(MAX)
  , @z                VARCHAR(MAX)
  , @FirstPeriodIndex INT
  , @LastPeriodIndex  INT;

--SET @x = '1.000.232'
SET @x = '2.1110.23444.456';

SELECT
    @FirstPeriodIndex = CHARINDEX('.', @x)
  , @LastPeriodIndex  = LEN(@x) - CHARINDEX('.', REVERSE(@x)) + 1;

SELECT @z = SUBSTRING(@x, @FirstPeriodIndex + 1, @LastPeriodIndex - @FirstPeriodIndex - 1);

SELECT
    @x                AS x
  , @FirstPeriodIndex AS FirstPeriodIndex
  , @LastPeriodIndex  AS LastPeriodIndex
  , @z                AS z;

Вот dbfiddle .

...