1. 程式人生 > >sql中#和$的區別

sql中#和$的區別

#{}在預編譯的過程中會自動用一個佔位符?代替變數 【預編譯處理】

select * from user where name = ?;

${}在sql處理的過程中只是簡單的字串替換 【字串替換】

select * from user where name = 'test';

#{} 的引數替換是發生在 DBMS 中,而 KaTeX parse error: Expected 'EOF', got '#' at position 26: …析過程中。 使用原則:優先使用#̲,其次是,另外sql使容易引起sql注入的安全性問題,具體看情況使用,傳入的引數為表名的時候建議用

. 實際應用:like的使用,一般我們會用在sql的模糊匹配上,有時我們會這樣使用 Like ‘%${}%’ Like ‘%#{}%’ Like ‘%’||#{}||’%’(||起到拼接作用) 那麼這裡就稍微講解下有關sql注入攻擊 一般sql注入都是發生在編譯的過程中,通過惡意注入特殊字元等操作,使得編譯後形成惡意的操作執行,這樣的話勢必會對資料庫操作有嚴重的影響,因而安全得不到保障。 但是預編譯的話就能很好的規避這個問題啦,提前對sql進行預編譯處理,而其後注入的引數不再對其進行sql編譯。