在默認(rèn)值情況下,
select 'abc',Titile from tb_Name; ---輸出內(nèi)容 是abc;
如果想輸出 單引號(hào) 'abc,需要使用select '''abc',Titile from tb_Name; ---這里用三個(gè)單引號(hào)'''abc;
select '''abc''',Title from tbName; 輸出內(nèi)容是'abc';兩邊帶有單引號(hào);
謹(jǐn)記:如果字符串包含單引號(hào),則需要在單引號(hào)前再增加一個(gè)單引號(hào)。
exec('select * from tbName') Sql語句兩邊有單引號(hào)'可以執(zhí)行,沒有時(shí)exec(select * from tbName)不能執(zhí)行。
set @name='Name';select @name from A123 ; --1select Name from A123; --2exec('select '+ @name+' from A123'); --3exec('select '+ 'Name'+' from A123'); --4
在連接純字符串中,'+' 單引號(hào)加號(hào)單引號(hào) 可以加在任何位置,這條規(guī)律方便引入變量的加入。exec('select '+ 'Name'+' from A123'); 可將'+'刪除,變成exec('select Name from A123');或者exec('select'+' Name from A123'); 效果一樣,無本質(zhì)區(qū)別。
以上四句執(zhí)行語句中,2、3、4句執(zhí)行結(jié)果是相同的,均等同于第2句;1執(zhí)行語句等同于select'Name' from A123;
use db_Test; --數(shù)據(jù)庫名稱需要修改godeclare @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 列的名稱需要修改,修改該哪一個(gè)列? 修改兩個(gè)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 Curbdeallocate Curb
從第2行實(shí)現(xiàn)第五行代碼,首先在加號(hào)附近加上 ' 字符串內(nèi)容 '+ OR +' 字符串內(nèi)容 ' 。
根據(jù)第4、5行,在字符串中加入 '+' 對(duì)代碼無影響,可以將其刪除。
以上代碼實(shí)現(xiàn)的功能,遍歷數(shù)據(jù)庫中的所有表,并依次在每一個(gè)表中執(zhí)行更改語句,比如 --1中 將表中Name字段的內(nèi)容加上表名。如何在exec語句中加單引號(hào)?
寫出原始語句 update @tbName set Name = Name + @tbName
首先首尾加單引號(hào);聲明的變量前面加 '+,后面加 +';最后看賦值部分,需要使用單引號(hào)包圍聲明的變量,需要使用兩個(gè)單引號(hào)。
根據(jù)表名來輸出"執(zhí)行每個(gè)表的SQL語句"
USE db_Test; --修改數(shù)據(jù)庫名稱 SELECT 'update' + name + ' set Title = ''' + name + '''+Title' as sql --name獲取的是數(shù)據(jù)庫中所有表的名稱;--表名稱+Title --修改Title(列名稱)from sys.tables;
USE db_Test; --修改數(shù)據(jù)庫名稱 SELECT 'update ' + name + ' set Title = ''' + name + '''+Title+''abc'''from sys.tables;
USE db_Test; --修改數(shù)據(jù)庫名稱 SELECT 'update ' + name + ' set Title = ''abc' + name + '''+Title+''abc''' --Title是表中Title列中的內(nèi)容,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) --只能執(zhí)行一句 只能更改一個(gè)表。
新聞熱點(diǎn)
疑難解答
圖片精選