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)   --只能執行一句  只能更改一個表。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM