在默認值情況下,
select 'abc',Titile from tb_Name; ?---輸出內(nèi)容 是abc;
如果想輸出 單引號 'abc,需要使用select '''abc',Titile from tb_Name; ---這里用三個單引號'''abc;
select '''abc''',Title from tbName; ? 輸出內(nèi)容是'abc';兩邊帶有單引號;
謹記:如果字符串包含單引號,則需要在單引號前再增加一個單引號。
?
exec('select * from tbName') ?Sql語句兩邊有單引號'可以執(zhí)行,沒有時exec(select * from tbName)不能執(zhí)行。?
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
在連接純字符串中,'+' ?單引號加號單引號 ?可以加在任何位置,這條規(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ù)庫名稱需要修改 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行實現(xiàn)第五行代碼,首先在加號附近加上 ' 字符串內(nèi)容 '+ ?OR ? +' 字符串內(nèi)容 ' 。
根據(jù)第4、5行,在字符串中加入 '+' 對代碼無影響,可以將其刪除。
?
以上代碼實現(xiàn)的功能,遍歷數(shù)據(jù)庫中的所有表,并依次在每一個表中執(zhí)行更改語句,比如 --1中 將表中Name字段的內(nèi)容加上表名。
如何在exec語句中加單引號?
寫出原始語句 ?update ?@tbName ? set Name = Name + @tbName
首先首尾加單引號;聲明的變量前面加 '+,后面加 +';最后看賦值部分,需要使用單引號包圍聲明的變量,需要使用兩個單引號。
?
根據(jù)表名來輸出"執(zhí)行每個表的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í)行一句 只能更改一個表。
?
?
?
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
