Чтобы выбрать все, что находится перед определенным символом в T-SQL, вы можете использовать различные функции работы со строками, доступные в SQL Server. Вот несколько методов с примерами кода:
Метод 1: использование функции LEFT()
DECLARE @inputString VARCHAR(100) = 'Hello, World!';
DECLARE @delimiter CHAR(1) = ',';
SELECT LEFT(@inputString, CHARINDEX(@delimiter, @inputString) - 1) AS Result;
Этот метод использует функцию LEFT()вместе с CHARINDEX(), чтобы найти позицию символа-разделителя и извлечь подстроку перед ним.
Метод 2: использование функции SUBSTRING()
DECLARE @inputString VARCHAR(100) = 'Hello, World!';
DECLARE @delimiter CHAR(1) = ',';
SELECT SUBSTRING(@inputString, 1, CHARINDEX(@delimiter, @inputString) - 1) AS Result;
Здесь функция SUBSTRING()используется для извлечения подстроки, начиная с первого символа и заканчивая непосредственно перед разделителем.
Способ 3: использование функции PARSENAME() (для значений с разделителями)
DECLARE @inputString VARCHAR(100) = 'Hello, World!';
DECLARE @delimiter CHAR(1) = ',';
SELECT PARSENAME(REPLACE(@inputString, @delimiter, '.'), 2) AS Result;
Функция PARSENAME()обычно используется для анализа имен объектов, но ее также можно использовать для извлечения нужной подстроки, рассматривая разделитель как точку (.) и выбирая вторую часть.
Метод 4. Использование функций LEFT() и REVERSE() (для значений фиксированной длины)
DECLARE @inputString VARCHAR(100) = 'Hello, World!';
DECLARE @delimiter CHAR(1) = ' ';
SELECT REVERSE(LEFT(REVERSE(@inputString), CHARINDEX(@delimiter, REVERSE(@inputString)) - 1)) AS Result;
Этот метод включает в себя переворачивание входной строки, поиск положения разделителя, а затем использование функций LEFT()и REVERSE()для извлечения подстроки.