平常經常遇到一些語句需要使用動態語句,來實現作業任務的計畫執行。例如動態表名,在分表設計時使用了月份格式(a_201912)
在實現此類格式表名的作業任務時,必須採用動態語句,以避免每月更換一次sql語句的尷尬。現將部分實際操作經驗總結如下:
一、基本語句格式:定義變數,給變數賦值,使用變數拼接sql,語句輸出
二、小技巧:通過print列印檢視自己拼接的語句是否正確,以及錯誤在**,待正確時再用exec執行輸出
三、難點,動態sql的拼接的難點是需要解決引號的應用問題,也就是where條件的拼接
只要明白以下四個小語句顯示出來的效果,動態sql的拼接就比較簡單了,直白的講,就是用變數替換掉sql執行時的where=』???『語句裡的』???'條件,遇到字串條件或有字串的函式就替換成變數,就ok了。
---下圖中的所有'均為單引號
declare
@sq nvarchar(50)
,@sq2 nvarchar(50)
,@sq3 nvarchar(50)
,@sq4 nvarchar(50)
,@nddate nvarchar(50)
set@sq
=''''
set @sq2=''''''
set @sq3='''張三'''
set @ndate=replace('
2019-12
','-
','')
print
@sqprint
@sq2
print
@sq3
print
@ndate
如上**結果分別為(1
)'(2) ''(3
)'張三'(4
)201912
--字串
--完整例項如下
declare
@sql
varchar
(100),
@ndate
varchar(6
),@condition
varchar(20
)set
@condition
='''檔案'''
set@ndate
=replace
('2019-12'
,'-',''
)set
@sql
='select * from a_'
+@ndate
+' where dir='
+@condition
print
(@sql
)--最終拼接得到的sql語句如下
select
*from a_201912 where dir=
'檔案'
SQL語句的動態拼接(1)
1 為什麼使用動態拼接?在自我學習中只是針對資料做簡單的增刪改查操作,但是在實際的業務中,經常會根據不同的情況執行不同的sql語句才可以。這個問題如何解決呢?2 解決方案 sql語句的動態拼接 3 動態拼接標籤 常見的動態拼接標籤 if where choose set trim foreach b...
動態SQL拼接
多選刪除,修改筆記的型別,會出現效能差,用乙個sql最好。mybatis提供的動態sql拼接功能,可以優化資料層操作,減少冗餘sql的產生,進而提供資料訪問效能。動態sql經常與陣列,list,map 引數配合使用。動態updateupdate cn note setcn note type id ...
jpa 動態sql拼接 JPA的動態查詢拼接
在使用spring jpa提供的方法只能進行簡單的crud,如果遇到複雜的情況就需要我們動態來構建查詢條件了。這裡我們來看使用criteriabuilder如何來構造查詢。核心 criteriabuilder criteriabuilder entitymanager.getcriteriabuil...