У меня есть таблица, в которой данные хранятся как разделенные запятыми, так и без запятой, разделенной на несколько строк.
Я хочу разделить эти значения на разные строки. Я хочу улучшить / улучшить способ сделать это с моим существующим запросом, если это возможно.
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 Команда
Я пытаюсь использовать одну и ту же процедуру и таблицу для отправки почты этим пользователям, поэтому мне нужно разделить эти значения через запятую в строку и объединить эту таблицу сотрудников с реальной таблицей сотрудников чтобы получить их другие данные, такие как имя, код сотрудника, адрес электронной почты, лицо, сообщающее и т. д. ...
Я хочу использовать ту же процедуру и таблицу для отправки почты каждому отдельному сотруднику.