動態SQL語句的拼接實現

2021-10-01 13:12:25 字數 1380 閱讀 6475

平常經常遇到一些語句需要使用動態語句,來實現作業任務的計畫執行。例如動態表名,在分表設計時使用了月份格式(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...