問題點:
String guestId_filter = "0001"StringBuilder sql = new StringBuilder("select m from Message m where 1=1 ");String condition = " and find_in_set(" + guestId_filter + ", guestids)>0";sql.append(condition);System.out.PRintln("sql = " + sql.toString());打印的結果為 sql = select m from Message m where 1=1 and find_in_set(0001, guestids)>0
數據中有guestId 為0001這條記錄,但用MySQL 命令死活查不出來,如果將guestId_filter改為1000,又可以查找到guestId為1000的記錄,到底是為啥呢?特么糾結了一個晚上!
分析中: 原來當這條語句傳給mysql 執行時,0001這個參數被強轉成整型1, 所以這條命令就變成了
`sql = select m from Message m where 1=1 and find_in_set(1, guestids)>0`所在當然就檢索不到0001這條記錄了。。。。。。。。
解決方法: 將guestId_filter用單引號(”)括起來即可
String guestId_filter = "0001"StringBuilder sql = new StringBuilder("select m from Message m where 1=1 ");String condition = " and find_in_set('" + guestId_filter + "', guestids)>0";sql.append(condition);System.out.println("sql = " + sql.toString());打印的結果為 sql = select m from Message m where 1=1 and find_in_set('0001', guestids)>0
即可成功查詢到guestid為0001這條記錄。
新聞熱點
疑難解答