Поддерживаемые коды языков ISO в SQL-сервере

• Как я могу указать поддерживаемые региональные коды ISO для каждой версии, над которой я работаю?

Мне нужно проверить код языка ISO 639-1 (2 символа), чтобы узнать, поддерживается ли он. Вы не получаете ответа по умолчанию для версий до 2019 года. Это вызывает ошибку.

Пример требования:

      select format(current_timestamp,'dd-MMMM-yyyy','es')
select format(current_timestamp,'dd-MMMM-yyyy','mn')
select format(current_timestamp,'dd-MMMM-yyyy','ii')
select format(current_timestamp,'dd-MMMM-yyyy','oo')
select format(current_timestamp,'dd-MMMM-yyyy','qq')

Вышеупомянутое вернет 2 ошибки на (my) v.2016 - параметр культуры 'oo', указанный в вызове функции, не поддерживается. Параметр языка и региональных параметров «qq», указанный в вызове функции, не поддерживается.

Это не соответствует определениям, перечисленным в sys.syslanguages. И эта таблица также не включает код iso.

Спасибо!

1 ответ

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

      drop table if exists #SupportedLanguages;
create table #SupportedLanguages(Lang varchar(2));
declare c cursor fast_forward local for
select concat(a.value,b.value)
from string_split('a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z',',')a
    cross apply string_split('a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z',',')b
open c;

declare @c varchar(2), @cmd varchar(100);
fetch next from c into @c;

while @@FETCH_STATUS = 0
begin
    select @cmd = concat('select format(current_timestamp,''dd-MMMM-yyyy'',''', @c, ''')')
    begin try
        exec(@cmd);
        insert into #SupportedLanguages values(@c);
    end try
    begin catch
    end catch
    fetch next from c into @c;
end;

close c;
deallocate c;
Другие вопросы по тегам