2012-02-29 2 views
1

У меня есть таблица с логинами в этой форме:Как получить подстроку от заданного символа?

login1 
domain1\login2 
otherDomain\login3

данных всегда в форме:
DOMAIN \ логин
или
Войти

Мне нужно, чтобы получить логины без префиксов в форме (оставить все на правой стороне '\'):

login1 
login2 
login3

Как это сделать в SQL Ser веры?

+0

Возможно ли иметь такие данные, как '' abc \ xyz \ login4''? – MatBailie

+0

Что вы пробовали? Где именно вы застряли? – Oded

+0

Взгляните на ['CHARINDEX()'] (http://msdn.microsoft.com/en-us/library/aa258228%28SQL.80%29.aspx) и ['RIGHT()'] (http: //msdn.microsoft.com/en-us/library/aa238425%28v=sql.80%29.aspx). – jensgram

ответ

5

Вы можете сделать это следующим образом:

print substring(@s, charindex('\', @s) + 1, len(@s)); 

Это получает индекс \, а затем добавляет 1, чтобы получить позицию после него, и выполняет substring от этой позиции, чтобы пройти в конце строки (это нормально в SQL 2008 R2).

+0

Правильно, это работает, спасибо .. Я пробовал аналогичный метод, но я забыл, что для charindex «Исходная позиция возвращается 1, а не 0». –