2016-03-18 2 views
-2

вот моя строка, я используюПолучите строку перед подстрокой, используя sql?

SET @str = 025-121-3453 

я хочу, чтобы получить часть строки перед тем выражением и после выражения, используя SQL

допускают exression это

SELECT SUBSTRING(String, 
LEN(LEFT(String, CHARINDEX ('121', String))) + 1, LEN(String) 
- LEN(LEFT(String, 
CHARINDEX ('121', String))) - LEN(RIGHT(String, LEN(String) - 

    CHARINDEX ('121', String))) - 1) FROM StringPatternData WHERE String = '025-121-3453'; 

выход

в 1 запросе на поставку будет '025-' & в другой «-3453»

+4

Ваш вопрос непонятен. Попытайтесь объяснить, что вы хотите сделать. –

+2

Всегда такой же формат? – jarlh

+0

очень ясно теперь строка перед конкретным текстом –

ответ

0

Вы можете сделать это с помощью некоторых встроенных функций:

DECLARE @str VARCHAR(100) = '025-121-3453' 

SELECT LEFT(@str, CHARINDEX('121', @str) - 1) , 
     RIGHT(@str, CHARINDEX('121', REVERSE(@str)) - 1) 

Обратите внимание, что вы будете иметь, чтобы обеспечить обратную картину во второй части запроса. То есть если вы раскалываете на 123, второй шаблон должен быть 321.

+0

thankyou ..................... –

0

Просто для удовольствия здесь другой способ, которым вы могли бы это сделать.

DECLARE @str VARCHAR(100) = '025-121-3453' 

select PARSENAME(replace(@str, '-', '.'), 3) 
    , PARSENAME(replace(@str, '-', '.'), 1) 
+0

Мне не нужно весело, у меня есть другая строка тоже –

+0

Что это значит? –

Смежные вопросы