SQL — Статистические ключи привязки — добавление символов в строку, если ее длина не является необходимой

#sql

#sql

Вопрос:

Я создаю ключ статистической привязки, и я успешно выполнил эту часть. Проблема, с которой я сталкиваюсь, заключается в том, что имена некоторых людей недостаточно длинные, поэтому им не хватает 13 символов. Мне нужно иметь возможность добавить «2» в конец, чтобы сделать его требуемым 14 символами. Ниже приведен мой код, который работает, я просто пытаюсь заполнить только те, которые не соответствуют, чтобы добавить число «2» в конец. Например, если имя сомона было очень коротким, а в ключе было всего 10 символов, я бы добавил к нему четыре ‘2’ и так далее. Я действительно надеюсь, что добавил достаточно информации. Заранее спасибо

 isnull(SUBSTRING(rtrim(ltrim(replace(hhm.Surname,'''',''))),2,1),'2')
   isnull(SUBSTRING(rtrim(ltrim(replace(hhm.Surname,' ',''))),3,1),'2')
   isnull(SUBSTRING(rtrim(ltrim(replace(hhm.Surname,' ',''))),5,1),'2')
   isnull(SUBSTRING(rtrim(ltrim(replace(hhm.forenames,'''',''))),2,1),'2')
   isnull(SUBSTRING(rtrim(ltrim(replace(hhm.forenames,' ',''))),3,1),'2')
   case when hhm.[Date of Birth] is NULL
        then '00000000'
        else replace(CONVERT(char(10),hhm.[Date of Birth],103),'/','')
   end
   isnull(case when hhm.Gender = 'M'
        then '1'
        else '2'
   end,'2')                                         as 'Statistical Linkage Key'
  

Ответ №1:

На случай, если кто-нибудь столкнется с этим и задастся вопросом, каков был ответ, я в конце концов понял это. Мне просто нужно было добавить в COALESCE(NULLIF(filed),»), ‘2’), как вы можете видеть ниже.

 ,COALESCE(NULLIF(SUBSTRING(rtrim(ltrim(replace(hhm.Surname,'''',''))),2,1),''),'2')
   COALESCE(NULLIF(SUBSTRING(rtrim(ltrim(replace(hhm.Surname,' ',''))),3,1),''),'2')
   COALESCE(NULLIF(SUBSTRING(rtrim(ltrim(replace(hhm.Surname,' ',''))),5,1),''),'2')
   COALESCE(NULLIF(SUBSTRING(rtrim(ltrim(replace(hhm.forenames,'''',''))),2,1),''),'2')
   COALESCE(NULLIF(SUBSTRING(rtrim(ltrim(replace(hhm.forenames,' ',''))),3,1),''),'2')
   case when hhm.[Date of Birth] is NULL
        then '00000000'
        else replace(CONVERT(char(10),hhm.[Date of Birth],103),'/','')
   end
   isnull(case when hhm.Gender = 'M'
        then '1'
        else '2'
   end,'2')                                         as 'Statistical Linkage Key'