У меня есть таблица, в которой один столбец содержит несколько адресов электронной почты или имен в одной строке:
+----+-------------------------------------------------------+
| id ¦ emails ¦
+----+-------------------------------------------------------+
| 1 ¦ John Doe; jdoe@gmail.com; Company IT; jd@company.com; ¦
+----+-------------------------------------------------------+
| 2 ¦ jane@company.com; Jane Doe; jd@company.com; ¦
+----+-------------------------------------------------------+
Мне нужно оценить столбец сообщений электронной почты, чтобы определить, существуют ли внешние адреса электронной почты (например, jdoe@gmail.com
),Итак, мне нужно разделить значения в столбце emails
на отдельные строки и оценить каждую строку. В конце я хотел бы обновить таблицу дополнительным столбцом, указывающим, являются ли электронные письма внутренними или внешними.
+----+-------------------------------------------------------+-----------+
| id ¦ emails ¦ flag ¦
+----+-------------------------------------------------------+-----------+
| 1 ¦ John Doe; jdoe@gmail.com; Company IT; jd@company.com; ¦ external ¦
+----+-------------------------------------------------------+-----------+
| 2 ¦ jane@company.com; Jane Doe; jd@company.com; ¦ internal ¦
+----+-------------------------------------------------------+-----------+
Мне удалось разделить строку с помощью STRING_SPLIT()
и выполнить оценку, которую я хотел бы (в некотором роде).
DECLARE @flag int
SELECT @flag=COUNT(*) FROM STRING_SPLIT('John Doe; jdoe@gmail.com; Company IT; jd@company.com;', ';')
WHERE value LIKE '%@%'AND value NOT LIKE '%Company%'
IF (@flag > 0)
BEGIN
Print 'extern'
END
ELSE
BEGIN
Print 'intern'
END
Однако сейчас я передаюстрока для функции STRING_SPLIT()
. Вместо этого я хотел бы пропустить столбец emails
и обновить таблицу в соответствии с результатами оценки. Есть идеи как этого добиться?