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

it2024-08-06  67

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

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()来过滤。

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

转载于:https://www.cnblogs.com/_fyz/archive/2011/03/12/SqlStrTrim.html

最新回复(0)