powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ms sql сложение строк без лишних пробелов
7 сообщений из 7, страница 1 из 1
ms sql сложение строк без лишних пробелов
    #35078749
gotko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mssql200 + vfp 8.0
есть udf на сервере, которая должна вернуть результат в строку char(100)

p1=(select name from t1 where ...) = 'Пупкин' char(50)
p2=(select name from t2 where ...) = 'Москва' char(50)
return p1+' -> '+p2 ('Пупкин -> Москва')

но выдается 'Пупкин (куча пробелов до 50) -> Москва (куча пробелов до 50)'
как обрезать лишние пробелы, чтобы строка формировалась без них ?
rtrim() не проходит - выдает тоже самое... :(
...
Рейтинг: 0 / 0
ms sql сложение строк без лишних пробелов
    #35078781
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gotkomssql200 + vfp 8.0
есть udf на сервере, которая должна вернуть результат в строку char(100)

p1=(select name from t1 where ...) = 'Пупкин' char(50)
p2=(select name from t2 where ...) = 'Москва' char(50)
return p1+' -> '+p2 ('Пупкин -> Москва')

но выдается 'Пупкин (куча пробелов до 50) -> Москва (куча пробелов до 50)'
как обрезать лишние пробелы, чтобы строка формировалась без них ?
rtrim() не проходит - выдает тоже самое... :(
Покажите весь текст вашей серверной udf.
С уважением, Алексей.
...
Рейтинг: 0 / 0
ms sql сложение строк без лишних пробелов
    #35078790
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Типу char(50) положено по определению добивать данные доего длины пробелами. Если концевые пробелы не нужны можно использовать varchar(50).
2. И что, даже так выдает лишние пробелы?

Код: plaintext
return rtrim(p1)+' -> '+rtrim(p2)
...
Рейтинг: 0 / 0
ms sql сложение строк без лишних пробелов
    #35078837
gotko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
varchar помог ! спасибо !!!!!!!!!!!!
...
Рейтинг: 0 / 0
ms sql сложение строк без лишних пробелов
    #35078871
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gotkovarchar помог ! спасибо !!!!!!!!!!!!
Очень странно!!!
varchar помог (это понятно. Кстати, и после RETURTS тоже тогда надо поставить varchar(100))
, а то, что предлагал Sergey Sizov. (return rtrim(p1)+' -> '+rtrim(p2)) не помогло !
Может все-таки приведете текст своей UDF?
С уважением, Алекей.
...
Рейтинг: 0 / 0
ms sql сложение строк без лишних пробелов
    #35078991
gotko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rtrim тоже помог ...я ltrim поставил вместо него (косячу помаленьку, сорри) :)
то, что я привел как пример на самом деле выглядит так ...

суть- по написанию артикула надо построить его буквенное описание, ...
указываю в типе артикула- где какой параметр зашит и по вспомогательным справочникам
возвращаю значение на комбинации символов из порезанного по параметрам артикула.
Если нет соответствия то '*'

CREATE FUNCTION dbo.get_art_vid (@vn_art int)
RETURNS char(200) AS
BEGIN
declare @name char(100),@p1 varchar(30),@x int,@l int,@p4 varchar(30),@p2 varchar(30),@p3 varchar(30)
set @name=(select name from t_art where c_art=@vn_art)

set @l=(select lx1 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @x=(select px1 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @p1=(select name from t_x_1 where x=substring(@name,@x,@l)
and c_t_art=(select c_t_art from t_art where c_art=@vn_art))

set @l=(select lx2 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @x=(select px2 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @p2=(select name from t_x_2 where x=substring(@name,@x,@l)
and c_t_art=(select c_t_art from t_art where c_art=@vn_art))

set @l=(select lx3 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @x=(select px3 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @p3=(select name from t_x_3 where x=substring(@name,@x,@l)
and c_t_art=(select c_t_art from t_art where c_art=@vn_art))

set @l=(select lx4 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @x=(select px4 from t_t_art where c_t_art= (select c_t_art from t_art where c_art=@vn_art))
set @p4=(select name from t_x_4 where x=substring(@name,@x,@l)
and c_t_art=(select c_t_art from t_art where c_art=@vn_art))

if @p1 is null set @p1='*'
if @p2 is null set @p2='*'
if @p3 is null set @p3='*'
if @p4 is null set @p4='*'

return rtrim(@p1)+'|'+rtrim(@p2)+'|'+rtrim(@p3)+'|'+rtrim(@p4)
END

заранее оговорюсь - не претендую на оптимальность и оригинальность кода
-я только учусь в mssql :)
...
Рейтинг: 0 / 0
ms sql сложение строк без лишних пробелов
    #35079044
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
М-да, тяжелый случай...
Как минимум все char заменить на varchar. Как максимум еще и переписать это одним запросом.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ms sql сложение строк без лишних пробелов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]