В SQL Server 2000 как вы добавляете {n} количество 0 к nchar (n)?

#sql-server #sql-server-2000

#sql-server #sql-server-2000

Вопрос:

Я использую SQL Server 2000 и я не уверен, существует ли уже функция для добавления любого количества 0 к nchar(n) , или это лучше всего сделать в функции?

Правильно ли это выглядит

   proc repeatingCh
     @n int, -- i/p n to some number of characters
     @ch nchar(1), --i/p character
     @ch_n nchar(n) out
  as
  begin
     declare @ch_n as nchar(n)
     set @ch_n = ''

     for(i=1 to n)
     begin
        @ch_n = @ch_n   @ch
     end

     return 1
  end
  

Я хочу вызвать это в sproc или … скорее всего, в функции и вернуть повторяющиеся символы.

Комментарии:

1. Если ваше n больше 5, я бы настоятельно рекомендовал использовать NVARCHAR вместо NCHAR . NCHAR поля всегда будут дополняться пробелами до их определенной длины, поэтому, если у вас есть NCHAR(50) поле и хранилище value в нем, вы все равно будете использовать 50 символов (и 100 байт), даже если ваша строка имеет длину всего 5 символов

Ответ №1:

снова я 😉 Для этого вы можете использовать REPLICATE :

 SELECT REPLICATE('0', 10)
  

Комментарии:

1. Ах, здорово. И я, вероятно, могу просто вставить n, где 10, чтобы получить любое количество ‘0’. спасибо

2. Да, извините, следовало использовать это в вашем первоначальном вопросе. Но я всегда забываю, что приятный маленький REPLICATE

3. Теперь я могу объединить это с предыдущим вопросом, чтобы создать нужную мне функцию на основе n числа цифр и некоторого целого числа, которое даст мне цифру с начальными ‘0’, всего n цифр.

Ответ №2:

например, ваша запись без размера col1 55 66 777 888

вам нужно все в 6-значном формате

если выбрать replicate(‘0’,6-len(col1)) col1

или

объявить @input varchar(10)

set @input = ‘1234’

выберите replicate(‘0’,10-len(@input)) @input