Sql server 数据库中,纯SQL语句查询、执行 单

系统 1708 0
原文: Sql server 数据库中,纯SQL语句查询、执行 单引号问题。

在默认值情况下,

select 'abc',Titile from tb_Name;  ---输出内容 是abc;

如果想输出 单引号 'abc,需要使用select '''abc',Titile from tb_Name; ---这里用三个单引号'''abc;

select '''abc''',Title from tbName;   输出内容是'abc';两边带有单引号;

谨记:如果字符串包含单引号,则需要在单引号前再增加一个单引号。

 

exec('select * from tbName')  Sql语句两边有单引号'可以执行,没有时exec(select * from tbName)不能执行。 

set @name='Name'; 
select @name from A123 ;  --1
select Name from A123;  --2
exec('select '+ @name+' from A123');  --3
exec('select '+ 'Name'+' from A123');  --4

在连接纯字符串中,'+'  单引号加号单引号  可以加在任何位置,这条规律方便引入变量的加入。exec('select '+ 'Name'+' from A123'); 可将'+'删除,变成exec('select Name from A123');或者exec('select'+' Name from A123');  效果一样,无本质区别。

以上四句执行语句中,2、3、4句执行结果是相同的,均等同于第2句;1执行语句等同于select 'Name' from A123;

      use db_Test; --
      
        数据库名称需要修改

go

declare @tbName varchar(
      
      
        100
      
      
        )

declare Curb cursor 
      
      
        for
      
      
        select
      
       name 
      
        from
      
      
         sys.tables

    open Curb

        fetch next 
      
      
        from
      
      
         Curb into @tbName

        
      
      
        while
      
       @@fetch_status=
      
        0
      
      
        

        begin

            
      
      --exec(
      
        '
      
      
        update 
      
      
        '
      
      + @tbName+
      
        '
      
      
         set Name=Name+
      
      
        '''
      
      +@tbName+
      
        ''''
      
      ) --
      
        1
      
      

            --exec(
      
        '
      
      
        update 
      
      
        '
      
      + @tbName+
      
        '
      
      
         set Name=
      
      
        '''
      
      +@tbName+
      
        '''
      
      
        +Name
      
      
        '
      
      ) --
      
        2
      
      
          列的名称需要修改,修改该哪一个列? 修改两个Name值即可。

            
      
      --exec(
      
        '
      
      
        update 
      
      
        '
      
      + @tbName+
      
        '
      
      
         set Name=
      
      
        '''
      
      +@tbName+
      
        '
      
      
        Mirror
      
      
        '
      
      +
      
        '''
      
      
        +Name
      
      
        '
      
      ) --
      
        3
      
         --
      
        表名加Mirror

              exec(
      
      
        '
      
      
        update 
      
      
        '
      
      + @tbName+
      
        '
      
      
         set Name=
      
      
        ''
      
      
        Mirror
      
      
        '
      
      +@tbName+
      
        '''
      
      
        +Name
      
      
        '
      
      )    --
      
        4
      
        --
      
        Mirror加表名

              exec(
      
      
        '
      
      
        update 
      
      
        '
      
      + @tbName+
      
        '
      
      
         set Name=
      
      
        '''
      
      +
      
        '
      
      
        Mirror
      
      
        '
      
      +@tbName+
      
        '''
      
      
        +Name
      
      
        '
      
      ) --
      
        5
      
         --
      
        Mirror加表名

            
      
      --exec(
      
        '
      
      
        update 
      
      
        '
      
      + @tbName+
      
        '
      
      
         set Name=
      
      
        '''
      
       + @tbName + 
      
        ''''
      
      )  --
      
        6
      
      

            --exec(
      
        '
      
      
        update 
      
      
        '
      
      + @tbName+
      
        '
      
      
         set Name=Name
      
      
        '
      
      )                 --
      
        7
      
      
        

            fetch next 
      
      
        from
      
      
         Curb into @tbName

        end

     close Curb

deallocate Curb
      
    

从第2行实现第五行代码,首先在加号附近加上 ' 字符串内容 '+  OR   +' 字符串内容 ' 。

根据第4、5行,在字符串中加入 '+' 对代码无影响,可以将其删除。

 

以上代码实现的功能,遍历数据库中的所有表,并依次在每一个表中执行更改语句,比如 --1中 将表中Name字段的内容加上表名。
如何在exec语句中加单引号?

写出原始语句  update  @tbName   set Name = Name + @tbName

首先首尾加单引号;声明的变量前面加 '+,后面加 +';最后看赋值部分,需要使用单引号包围声明的变量,需要使用两个单引号。

 

根据表名来输出"执行每个表的SQL语句" 

      
        USE db_Test;  --修改数据库名称 
      
      
        

SELECT  

    
      
      
        'update
      
      
        '
      
       + name + 
      
        '
      
      
         set Title = 
      
      
        '''
      
       + name + 
      
        '''
      
      
        +Title
      
      
        '
      
      
        as
      
      
         sql  --name获取的是数据库中所有表的名称;--表名称+Title  --修改Title(列名称)


      
      
        from
      
      
        

    sys.tables;
      
    
      USE db_Test;  --
      
        修改数据库名称 

SELECT  

    
      
      
        '
      
      
        update 
      
      
        '
      
       + name + 
      
        '
      
      
         set Title = 
      
      
        '''
      
       + name + 
      
        '''
      
      
        +Title+
      
      
        ''
      
      
        abc
      
      
        '''
      
      
        from
      
      
        

    sys.tables;
      
    
      USE db_Test;  --
      
        修改数据库名称 

SELECT  

    
      
      
        '
      
      
        update 
      
      
        '
      
       + name + 
      
        '
      
      
         set Title = 
      
      
        ''
      
      
        abc
      
      
        '
      
       + name + 
      
        '''
      
      
        +Title+
      
      
        ''
      
      
        abc
      
      
        '''   --Title是表中Title列中的内容,
      
      
        from
      
      
        

    sys.tables;
      
    
      
        USE db_Test;

declare @result varchar(
      
      
        255
      
      
        )


      
      
        set
      
       @result = 
      
        ''
      
      
        ;

SELECT  

    @result
      
      =
      
        '
      
      
        UPDATE 
      
      
        '
      
       + name + 
      
        '
      
      
         SET name = 
      
      
        '''
      
       + name + 
      
        '''
      
      
        +name
      
      
        '
      
      
        from
      
      
        

    sys.tables;

exec(@result)   --只能执行一句  只能更改一个表。
      
    

 

 

 

Sql server 数据库中,纯SQL语句查询、执行 单引号问题。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论