|
|
|
ms sql сложение строк без лишних пробелов
|
|||
|---|---|---|---|
|
#18+
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() не проходит - выдает тоже самое... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 13:53 |
|
||
|
ms sql сложение строк без лишних пробелов
|
|||
|---|---|---|---|
|
#18+
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. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 13:58 |
|
||
|
ms sql сложение строк без лишних пробелов
|
|||
|---|---|---|---|
|
#18+
1. Типу char(50) положено по определению добивать данные доего длины пробелами. Если концевые пробелы не нужны можно использовать varchar(50). 2. И что, даже так выдает лишние пробелы? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 14:00 |
|
||
|
ms sql сложение строк без лишних пробелов
|
|||
|---|---|---|---|
|
#18+
varchar помог ! спасибо !!!!!!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 14:13 |
|
||
|
ms sql сложение строк без лишних пробелов
|
|||
|---|---|---|---|
|
#18+
gotkovarchar помог ! спасибо !!!!!!!!!!!! Очень странно!!! varchar помог (это понятно. Кстати, и после RETURTS тоже тогда надо поставить varchar(100)) , а то, что предлагал Sergey Sizov. (return rtrim(p1)+' -> '+rtrim(p2)) не помогло ! Может все-таки приведете текст своей UDF? С уважением, Алекей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 14:27 |
|
||
|
ms sql сложение строк без лишних пробелов
|
|||
|---|---|---|---|
|
#18+
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 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 14:54 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35078837&tid=1588260]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 331ms |

| 0 / 0 |
