SqlServer之整形转字符型以及去除空格

  通常我们在写存储过程的时候会用到拼字符串的情况,特别是表设计采用分表设计的时候,会较常用到拼字符串,在存储过程中如果遇到下面这样的程序段结果会如何?

declare @Sql nvarchar(2000),@id int
set @id=1
set @Sql='select UserID from tb where id='+@id
exec(@Sql)

  事实证明,这样的结果,拼出来的@sql会是:select UserID from tb where id= 这里的1少了,为什么会这样?这是因为@id是整型,如果要这条sql语句正确执行需要做如下处理:

declare @Sql nvarchar(2000),@id int
set @id=1
set @Sql='select Name from tb where id='+str(@id)
exec(@Sql)

  在写存储过程中,如果少了这个转换就会得不到想要的结果,以前我自己也老犯这毛病。接下来我们来看下面的另一个demo:

declare @Sql nvarchar(2000),@i int
set @i=1
set @Sql='insert into tb(name) values(''这是第'+@i+'个人'')'
exec(@Sql)

如果这样又会是个什么样的结果?结果是插入库里肯定没问题的,问题是这个1前面会有空格,像”这是第      1个人“。如果这样的话,那么在前段呈现出来就很不好看了,我们再插入的时候就需要对这经行空格的过滤。我们在写程序的时候如果有遇到空格都会想到用trim来规律,其实在sql里也有类似函数,我们这需要过滤的是左边的空格,所以我们可以这样写:

declare @Sql nvarchar(2000),@i int
set @i=1
set @Sql='insert into tb(name) values(''这是第'+LTrim(@i)+'个人'')'
exec(@Sql)

  这里的L=left表示左边,如果是右边可以用RTrim()来过滤。

讲了这么多,现在已经可以自然的拼字符串了。

posted @ 2011-03-12 13:51  comeonfyz  阅读(1770)  评论(0编辑  收藏  举报