zoukankan      html  css  js  c++  java
  • 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()来过滤。

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

  • 相关阅读:
    [NOI2001]炮兵阵地
    POJ 2411 Mondriaan's Dream
    【模板】割点(割顶)
    [Noip2007]Core树网的核
    2018.09.09模拟总结
    2018.09.08模拟总结
    [USACO11JAN]Roads and Planes
    最优贸易
    [USACO08JAN]Telephone Lines
    Calabash(葫芦娃)
  • 原文地址:https://www.cnblogs.com/_fyz/p/SqlStrTrim.html
Copyright © 2011-2022 走看看