2013-08-26 3 views
1

У меня есть ключ строки, какВозьмите подстроки из строки

Empl:9998 Earn Code:7704 Seq:1 

мне нужно взять номер сотрудника 9998 из строки.
Номер сотрудника всегда начинается с позиции 6 и заканчивается до второго E.
Я играл со всей строкой, но не успел. Я использую MS SQL.

+2

Все строковые функции? Даже [подстрока] (http://technet.microsoft.com/en-us/library/ms187748.aspx)? –

+0

Должно сделать немного больше, прежде чем спрашивать. Я бы сказал, что этот вопрос задавался много раз на StackOverflow. – Mayank

+0

Да, я использую подстанцию, но я не мог правильно определить длину. и я должен сделать больше поиска. Извините за это – user2587986

ответ

3

Нижеследующее заявление будет делать это:

select substring(empno, 6, 
       charindex('E', empno, 6) - 6) 
from (select 'Empl:9998 Earn Code:7704 Seq:1' as empno) t; 

Вы можете действительно хотите -7, если вы не хотите, чтобы пространство в «номер».

+0

Спасибо, я получаю результат '9998 Earn'. но мне действительно нужно 9998. Мне может понадобиться дополнительная помощь с этим – user2587986

+0

Спасибо. Я понял. Я просто начинающий и действительно ускорил вашу помощь. Я думаю, я должен сделать больше исследований, прежде чем задавать вопрос. Простите за это. еще раз спасибо – user2587986

3

substring функция позволит вам начать работу, но вам также понадобится charindex. (Я рекомендую поиск по индексу символа пробела)

+0

ok. большое спасибо – user2587986

0

Попробуйте

SELECT x = SUBSTRING('abcdef', 2, 3); 

Here is the result set.  
x  
---- 
bcd 
0

это всегда должно работать

Match match = Regex.Match(input, @"Empl:(\d+)", RegexOptions.IgnoreCase); 
EmplyId = match.Groups[1].Value 
Смежные вопросы