Как разделить запятые значения в SQL Сервер: улучшение текущего запроса? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть таблица, в которой данные хранятся как разделенные запятыми, так и без запятой, разделенной на несколько строк.

Я хочу разделить эти значения на разные строки. Я хочу улучшить / улучшить способ сделать это с моим существующим запросом, если это возможно.

create table TestData (EmployeeCode Varchar(50), ServiceYear int)
insert into TestData values ('EMP001', 5), ('EMP002,EMP003', 10)

 SELECT 
    ServiceYear
    , Split.EmployeeCode.value('.', 'VARCHAR(100)') AS EmployeeCode  
 FROM  
 (
     SELECT ServiceYear
     , CAST ('<M>' + REPLACE(EmployeeCode, ',', '</M><M>') + '</M>' AS XML) AS EmployeeCode  
     FROM TestData
 ) AS A CROSS APPLY EmployeeCode.nodes ('/M') AS Split(EmployeeCode);

Я использую Microsoft SQL Server 2008 R2 в качестве базы данных.

Почему я храню разделенные запятыми значения в таблица как ниже?

В моем приложении я показываю сообщение на ленте для всех тех, у кого сегодня день рождения. Также покажите поздравительное сообщение тем, кто проработал в организации пять или десять лет. Таким образом, сообщение просто сохраняется в таблице через запятую для всех этих сотрудников.

Пример сообщения выглядит как

Уважаемый AB C, XYZ Happy Birthday от HR Команда

Я пытаюсь использовать одну и ту же процедуру и таблицу для отправки почты этим пользователям, поэтому мне нужно разделить эти значения через запятую в строку и объединить эту таблицу сотрудников с реальной таблицей сотрудников чтобы получить их другие данные, такие как имя, код сотрудника, адрес электронной почты, лицо, сообщающее и т. д. ...

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

...