Враховуючи стовпчик адреси електронної пошти, мені потрібно знайти позицію знака @ для підрядки.
Яка indexof
функція для рядків у T-SQL?
Шукаєте щось, що повертає позицію підрядка в рядку.
в C #
var s = "abcde";
s.IndexOf('c'); // yields 2
Враховуючи стовпчик адреси електронної пошти, мені потрібно знайти позицію знака @ для підрядки.
Яка indexof
функція для рядків у T-SQL?
Шукаєте щось, що повертає позицію підрядка в рядку.
в C #
var s = "abcde";
s.IndexOf('c'); // yields 2
Відповіді:
CHARINDEX - це те, що ви шукаєте
select CHARINDEX('@', 'someone@somewhere.com')
-----------
8
(1 row(s) affected)
або
select CHARINDEX('c', 'abcde')
-----------
3
(1 row(s) affected)
Один дуже маленький ніт для вибору:
RFC для адрес електронної пошти дозволяє в першій частині включати знак "@", якщо він цитується. Приклад:
"john@work"@myemployer.com
Це досить рідко, але може статися. Теоретично слід розділити останній символ "@", а не перший:
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
Більше інформації:
Я вважаю, що ви хочете використовувати CHARINDEX
. Про це можна прочитати тут .