高分求助!!!SQL Server里面有没有给查询结果前补空格或者后补空格的函数????

ruolink 2002-07-11 09:12:41
诸位大虾,小弟在工作过程中遇到这样一个问题,从数据库里面查询出来的数据字段有时候需要在前面补空格或者后面补空格(或者其他字符,比如‘0’),这样能够凑齐一定长度的字符串。我知道在oracle里面有这样的函数,不知道sql server里面有没有?

有结果一定高分送给!
...全文
753 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
michealin 2002-07-14
  • 打赏
  • 举报
回复
同意neosu(neo) 的说法,这种操作无谓的增加了服务器的负担,在客户端应用程序里进行操作经济简单
TOKA 2002-07-14
  • 打赏
  • 举报
回复
以上方法完全正确!
yang兄、Open兄、蓝兄真乃高人
bluepower2008 2002-07-14
  • 打赏
  • 举报
回复
扬兄,另一种思路是:
declare @len int
declare @ch char(1)
set @len = 10 --指定字段的长度,不足用指定字符@ch补足
set @ch = '0' --也可以为空格,视情况而定
select right(replicate(@ch,@len) + ltrim(rtrim(convert(varchar,f1))) , @len)
from t1


--如果是右边补空格,使用left函数,思路类似。

neosu 2002-07-14
  • 打赏
  • 举报
回复
补空格的操作没必要用sql实现,应该在应用程序中实现。
gzhughie 2002-07-11
  • 打赏
  • 举报
回复
给你两个函数
1、REPLICATE
以指定的次数重复字符表达式。

语法
REPLICATE ( character_expression , integer_expression )

参数
character_expression

由字符数据组成的字母数字表达式。character_expression 可以是常量或变量,也可以是字符列或二进制数据列。

integer_expression

是正整数。如果 integer_expression 为负,则返回空字符串。

返回类型
varchar


2、SPACE
返回由重复的空格组成的字符串。

语法
SPACE ( integer_expression )

参数
integer_expression

是表示空格个数的正整数。如果 integer_expression 为负,则返回空字符串。

返回类型
char

Yang_ 2002-07-11
  • 打赏
  • 举报
回复
SELECT REPLICATE('0',10-LEN(RTRIM(LTRIM(FIELDNAME))))+RTRIM(LTRIM(FIELDNAME)) FROM TABLENAME
bluefish922 2002-07-11
  • 打赏
  • 举报
回复
怎样让输入的字符都对齐呢?比如我从一个表里查询了几个字段,我想得到下面的显示效果(整个是一个字符串):
A B C
-------------------------------(以下是显示出来的效果)
REGga goqnge bqarejt
harehreh 字符串hareh he53514y547
哈热 哈热哈日 ha352346ar
....

newly_ignorant 2002-07-11
  • 打赏
  • 举报
回复
我说是不是可以简单一点:

直接使用一个Char类型变量保存数据

Decalre @Value char(20)
select @value=field from table

因为Char类型本身就是固定长度的,会在后面补空格。
用下面语句测试一下就明白了:

declare @a char(10)
set @a='abc'
select @a +'haha' 'a'

输出 abc haha
warp1977 2002-07-11
  • 打赏
  • 举报
回复
对不足的位数,填充0来补充
REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS [Varchar Column]
OpenVMS 2002-07-11
  • 打赏
  • 举报
回复
declare @i numeric(3,1),@J varchar(30)
set @i=12.3
set @j='ok'
---output 8 number
select str(@i,8,1) as f1,replicate(' ',8-len(@j))+@j as f2
select replace(str(@i,8,1),' ','0') as f1,replace(replicate(' ',8-len(@j)),' ','0')+@j as f2

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧