• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 30次浏览 已收录 0个评论

在默认情况下, select ‘abc’,Titile from tb_Name; —输出内容 是abc; 如果想输出 单引号 ‘abc,需要使用select ”’abc’,Titile from tb_Name; —这里用三个单引号”’abc; select ”’abc”’,Title from tbName; 输出内容是’abc’;两边带有单引号; 谨记

在默认值情况下,

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;

三种情况:声明的变量、常量、列名。

第一步,先声明变量, exec(‘update ‘+ @tbName+’ set Name=”’ + @tbName + ””)

第二步,在 ”+ 或者 +” 中插入常量exec(‘update ‘+ @tbName+’ set Name=”Mirror’ + @tbName + ‘Mirror”’)

第三步,加入列名,,在变量旁边 +”” 或者 ””+ 位置处 修改为 +”’+Name’ 或者 ‘Name+”’+。 原始数据 exec(‘update ‘+ @tbName+’ set Name=Name+”’+@tbName+”’+Name’);

exec(‘update ‘+ @tbName+’ set Name=”Mirror”+Name+”’+@tbName+”’+Name’)。

<span><em><span>godeclare @tbName varchar(</span><span>100</span><span>)declare Curb cursor </span><span>for</span>    <span>select</span> name <span>from</span><span> sys.tables    open Curb        fetch next </span><span>from</span><span> Curb into @tbName        </span><span>while</span> @@fetch_status=<span>0</span><span>        begin            </span>--exec(<span>'</span><span>update </span><span>'</span>+ @tbName+<span>'</span><span> set Name=Name+</span><span>'''</span>+@tbName+<span>''''</span>) --<span>1</span>            --exec(<span>'</span><span>update </span><span>'</span>+ @tbName+<span>'</span><span> set Name=</span><span>'''</span>+@tbName+<span>'''</span><span>+Name</span><span>'</span>) --<span>2</span></em></span><span>  列的名称需要修改,修改该哪一个列? 修改两个Name值即可。            </span><span><em>--exec(<span>'</span><span>update </span><span>'</span>+ @tbName+<span>'</span><span> set Name=</span><span>'''</span>+@tbName+<span>'</span><span>Mirror</span><span>''</span><span>+Name</span><span>'</span>) --<span>3</span>   </em></span>--<span>变量加常量加列名</span><span><em><span>            --exec(<span>'update '</span>+ @tbName+<span>' set Name=''Mirror'''</span>)              exec(</span><span>'</span><span>update </span><span>'</span>+ @tbName+<span>'</span><span> set Name=</span><span>''</span><span>Mirror</span><span>'</span>+@tbName+<span>'''</span><span>+Name</span><span>'</span>)    --<span>4</span>  </em></span>--常量<span>加变量加列名</span><span><em><span>              exec(</span><span>'</span><span>update </span><span>'</span>+ @tbName+<span>'</span><span> set Name=</span><span>'''</span>+<span>'</span><span>Mirror</span><span>'</span>+@tbName+<span>'''</span><span>+Name</span><span>'</span>) --<span>5</span>  </em></span> --常量<span>加变量加列名            </span><span><em>--exec(<span>'</span><span>update </span><span>'</span>+ @tbName+<span>'</span><span> set Name=</span><span>'''</span> + @tbName + <span>''''</span>)  --</em></span>            --exec(<span>'</span><span>update </span><span>'</span>+ @tbName+<span>'</span><span> set Name=Name</span><span>'</span>)                 --<span>7</span>            --exec('update '+ @tbName+' set Name=''Mirror''+Name+'''+@tbName+'''+Name') --8  常量加列名加变量加列名
            --exec('update '+ @tbName+' set Name=''Mirror''+Name')   --9 常量加列名
<span><em><span>            fetch next </span><span>from</span><span> Curb into @tbName        end     close Curbdeallocate Curb</span></em></span>

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

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

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

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

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

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

<span>USE db_Test;  --修改数据库名称 </span><span>SELECT      </span><span>'update</span><span>'</span> + name + <span>'</span><span> set Title = </span><span>'''</span> + name + <span>'''</span><span>+Title</span><span>'</span>  <span>as</span><span> sql  --name获取的是数据库中所有表的名称;--表名称+Title  --修改Title(列名称)</span><span>from</span><span>    sys.tables;</span>

USE db_Test;  --<span>修改数据库名称 SELECT      </span><span>'</span><span>update </span><span>'</span> + name + <span>'</span><span> set Title = </span><span>'''</span> + name + <span>'''</span><span>+Title+</span><span>''</span><span>abc</span><span>'''</span><span>from</span><span>    sys.tables;</span>

USE db_Test;  --<span>修改数据库名称 SELECT      </span><span>'</span><span>update </span><span>'</span> + name + <span>'</span><span> set Title = </span><span>''</span><span>abc</span><span>'</span> + name + <span>'''</span><span>+Title+</span><span>''</span><span>abc</span><span>'''   --Title是表中Title列中的内容,</span><span>from</span><span>    sys.tables;</span>

<span>USE db_Test;declare @result varchar(</span><span>255<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码@网&</strong></span><span>)</span><span>set</span> @result = <span>''</span><span>;SELECT      @result</span>=<span>'</span><span>UPDATE </span><span>'</span> + name + <span>'</span><span> SET name = </span><span>'''</span> + name + <span>'''</span><span>+name</span><span>'</span><span>from</span><span>    sys.tables;exec(@result)   --只能执行一句  只能更改一个表。</span>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Sql server 数据库中,纯SQL语句查询、执行 单引号问题。

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址