在默认值情况下,
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) --只能执行一句 只能更改一个表。

