VS 在寫程式一樣的時候,prepare statement是我們不可或缺的一向工具 透過?來動態置入查詢參數,讓SQL語句可以發揮得更淋漓盡致... 問題是....如果有不需要置換的?怎麼辦... 下面是個例子: select concat(' http://www.google.com/search?q= ', param0, '&aq=f') as q, param1, param2 ... from some_table; 這邊希望?是sql產出值的一部分,然後透過SQL直接組織產出成為一個url string,當然,string中包含有?是url終場見到的...,此時,單純的query不會有問題,但是若在此時加上where子句,並且改寫成prepare statement格式... select concat(' http://www.google.com/search?q= ', param0, '&aq=f') as q, param1, param2 ... from some_table where condition1 = ? and condition2 = ?; 如果上述SQL以及對應的條件送進prepare statement查詢的話,系統會很明確的告訴你...EXCEPTION! 嘗試了一下,總覺得可以透過某些方式讓SQL變成合理... 最後腦筋動到MySQL的ASCSII上面...透過 MySQL的官方文件 說明,可以透過CHAR這個Function來置換ASCSII的字元,而要知道字元的ASCSII碼,則可以透過ASCII Function來查詢...做了一個簡單的測試: select ASCII('?'), CHAR(63) 執行結果如所預期... :D,修改上面的Prepare Statement後: select concat(' http://www.google.com/search ',CHAR(63),'q=', param0, '&aq=f...