反斜杠转义mysql java_mysql数据库中的反斜杠”\“怎么使用Java进行转义
mysql數據庫中的反斜杠”\“怎么使用Java進行轉義
發布時間:2020-11-24 15:15:12
來源:億速云
閱讀:88
作者:Leah
這期內容當中小編將會給大家帶來有關mysql數據庫中的反斜杠”\“怎么使用Java進行轉義,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
前言
在java中,反斜杠“\”轉義是“\”,因此表示一個“\”要使用“\\”,如果是正則表達式,那么表示一個“\”需要用“\\\\”,在mysql中,反斜杠轉義依然是“\”,和java相同。
現在問題是:如果mysql中一個字段的內容包含反斜杠,然后通過java連接mysql去篩選這個字段所在的條目,要怎么寫才能將該字段篩選出來呢?下面就是一個實驗:
1,先建立測試數據:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
insert into test (name) values ('\\'), ('\\\\');
向數據庫中插入2條數據,name的值分別是“\”和“\\”。
2,使用jdbc連接mysql,然后測試篩選條件:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement pstmt = conn.prepareStatement("select * from test where *條件"); // “*條件”見下文
pstmt.setString(1, "*篩選值"); // “*篩選值”見下文
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
}
3,測試:
i.
*條件 為:name = ?
*篩選值 為:
“\\”可以篩選出name為“\”的數據
“\\\\”可以篩選出name為“\\”的數據
這個看起來是比較正常的
ii.
*條件 為:name like ?
*篩選值 為:
“\\”或“”\\\\可以篩選出name為“\”的數據
“\\\\\\”或“\\\\\\\\”可以篩選出name為“\\”的數據
開始不變得奇怪了…
iii.
*條件 為:name like ‘%' ?
*篩選值 為:
“\\”或“\\\\”可以篩選出name為“\”和“\\”的數據
“\\\\\\”或“\\\\\\\\”可以篩選出name為“\\”的數據
和 ii. 有點類似
iv.
*條件 為:name like ? ‘%'
*篩選值 為:
“\\\\”可以篩選出name為“\”和“\\”的數據
“\\\\\\\\”可以篩選出name為“\\”的數據
又變得好像正常了…類似正則中的轉義
v.
*條件 為:name like ‘%' ? ‘%'
*篩選值 為:
“\\\\”可以篩選出name為“\”和“\\”的數據
“\\\\\\\\”可以篩選出name為“\\”的數據
和 iv. 類似了
4,分析:
使用“=”方式篩選貌似就是常規理解中的轉義,但是一旦使用了“like”就開始變得奇怪了,從測試來看,使用“like”篩選有些類似正則式,不過沒有使用“%”占位符的篩選中常規轉義依然有效,另外,奇怪的是 ii. 和 iii. 中的6根反斜杠是個什么鬼…完全不能理解…
5,結論:
sql語句是“=”篩選時,java就使用常規轉義即可
sql語句是“like”篩選時,最好使用正則式轉義
上述就是小編為大家分享的mysql數據庫中的反斜杠”\“怎么使用Java進行轉義了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
總結
以上是生活随笔為你收集整理的反斜杠转义mysql java_mysql数据库中的反斜杠”\“怎么使用Java进行转义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dreamweaver 正则表达式为属性
- 下一篇: github 思维导图开元软件_Mymi