Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 подскажите, где ошибка???  [new]
Mitka1976
Member

Откуда:
Сообщений: 8
написал функцию (пока что тупо перенос строки из одной в другую) - компилируется, но результатом выдает NULL - как будто вообще не выполняется цикл:

create function dbo.qwerty (@mystr nvarchar(50))
returns nvarchar(50)
begin
declare @position int, @ascii int, @string nvarchar(150)
set @position = 1
while (@position <= len(@mystr))
begin
set @ascii = ASCII(SUBSTRING(@mystr, @position, 1))
set @string = @string + char(@ascii)
set @position = @position + 1
end
return @string
end

Подскажите, ГДЕ порылась собака?
5 ноя 13, 21:49    [15081345]     Ответить | Цитировать Сообщить модератору
 Re: подскажите, где ошибка???  [new]
qwerty112
Guest
Mitka1976
написал функцию (пока что тупо перенос строки из одной в другую) - компилируется, но результатом выдает NULL - как будто вообще не выполняется цикл:

create function dbo.qwerty (@mystr nvarchar(50))
returns nvarchar(50)
begin
declare @position int, @ascii int, @string nvarchar(150)
set @position = 1
set @string = ''
while (@position <= len(@mystr))
   begin
	set @ascii = ASCII(SUBSTRING(@mystr, @position, 1))
	set @string = @string + char(@ascii)
    set @position = @position + 1
   end
return @string
end


Подскажите, ГДЕ порылась собака?

тут
5 ноя 13, 21:58    [15081387]     Ответить | Цитировать Сообщить модератору
 Re: подскажите, где ошибка???  [new]
Mitka1976
Member

Откуда:
Сообщений: 8
qwerty112,
начальная инициализация результирующей строки помогла - заработала!
в другой функции вроде все работало - строка собирается конкатенацией по частям - в случаях, когда строка начиналась с преобразования CAST(exp as nvarchar(*)), но бЕз него результат сваливался в NULL
с инициализацией работает как часы!

СПАСИБО, завтра начну с изучения матчасти - влияния начальной инициализации на дальнейший ход программы)))
5 ноя 13, 22:27    [15081494]     Ответить | Цитировать Сообщить модератору
 Re: подскажите, где ошибка???  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Mitka1976
завтра начну с изучения матчасти


Угу, особенно в части отличия типов данных varchar от nvarchar, а так же функций LEN от DATALENGTH и ASCII от UNICODE.

Сообщение было отредактировано: 5 ноя 13, 23:00
5 ноя 13, 22:47    [15081571]     Ответить | Цитировать Сообщить модератору
 Re: подскажите, где ошибка???  [new]
Mitka1976
Member

Откуда:
Сообщений: 8
pkarklin,

с помощью буквы 'n' предполагалось разделить русскоязычные и англоязычные поля в БД, однако по заглублению "в тему" что-то подсказывает - что и те и другие спокойно уложатся в рамки "не Юникода" - поправьте, ежели не так?
функцию определения длины вроде бы применил "ту, что доктор прописал", вторая возвращает число бАйт, занимаемых строкой
в дерби ASCII/UNICOD что-то не очень тянет - тем более, что у меня задачка больше расчетная, чем текстовая)))
6 ноя 13, 16:48    [15086004]     Ответить | Цитировать Сообщить модератору
 Re: подскажите, где ошибка???  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Два языка могут спокойно ужиться в одном поле с типом varchar без "буквы 'N'".
6 ноя 13, 16:58    [15086098]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить