Я прошу прощения, если мне кажется, что я не знаю.Я пишу на T-SQL только около 3 лет, и большинство из них самоучки.На моей работе мы храним значения Дня месяца в битовых масках.например.1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx преобразуется в 1, а 12345678910111213141516171819202122232425262728293031 преобразуется в 2147483647. Что я хочу / нужно сделать, это преобразовать значение int в varchar (64), содержащий числа и символы «x».У меня есть следующий код из другого post , который делает нечто похожее с некоторой настройкой, но он предоставляет данные в обратном направлении (справа налево [как это должно быть для двоичного кода) вместо слева направо).
declare @i int /* input */
set @i = 42
declare @result varchar(32) /* SQL Server int is 32 bits wide */
set @result = ''
while 1 = 1 begin
select @result = convert(char(1), @i % 2) + @result,
@i = convert(int, @i / 2)
if @i = 0 break
end
select Replace(@result,'0','X')
Также не все символы.Все 31 символ должны быть заполнены.
Я также играл с Простым рекурсивным CTE Роба Фарли для этого.