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

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

  • 相关阅读:
    AtCoder agc023_f
    CodeForces 1328
    洛谷 P4437
    Spark读取txt文件跳过第一行
    斯特林数学习笔记。
    hackrank subsets
    题解 CF1004F 【Sonya and Bitwise OR】
    [NOI2020]美食家
    Educational Codeforces Round 94 题解
    Delphi 与 C/C++ 数据类型对照表
  • 原文地址:https://www.cnblogs.com/_fyz/p/SqlStrTrim.html
Copyright © 2011-2022 走看看