• 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)   --只能执行一句  只能更改一个表。
  • 相关阅读:
    微服务下,使用ELK做日志收集及分析
    Spring boot下,集成任务调度中心(XXL-JOB)
    使用mysqldump 导出数据时的常用选项
    MySQL 批量insert 、单条insert
    分享一个 电子书下载网站 支持 ebook pdf azw3 epub mobi
    稀疏数组
    LaTeX 交叉引用系统简介
    服务器jupyter配置与ssh远程登录
    postgresql中终止正在执行的SQL语句
    Python 个人笔记(一)
  • 原文地址:https://www.cnblogs.com/houzhg/p/3512402.html
Copyright © 2020-2023  润新知