#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