測試時(比如查詢測試)注意的4個與mysql有關(guān)的字符 %? _? '? "
%通配符,代表一個以上的字符锰蓬。它在數(shù)據(jù)庫中為通配符幔睬,如果客戶在搜索框中輸入“%”,而程序未對輸入的字符進(jìn)行轉(zhuǎn)義芹扭,在系統(tǒng)將解釋為一個通配符麻顶,列出所有結(jié)果,而不是只含“%”的數(shù)據(jù)舱卡,一般需要解釋為“\%”辅肾,才可正常搜索出
_通配符,代表單個字符轮锥。其原理和“%”符時一樣的矫钓,大概學(xué)過SQL語句的人都知道像這樣的句子:
SELECT * FROMStundent WHERE City LIKE 'Ne%',SELECT * FROMStundent WHERE LastName LIKE 'C_r_er' 其中%和_都是通配符,所以未經(jīng)處理的%和_就會解釋為此處的通配符來
'單引號新娜,因SQL語句的字符串是用單引號赵辕,如果保存或查詢時,輸入“'”系統(tǒng)未經(jīng)處理杯活,就會解釋為SQL語句的中字符串的單引號匆帚,所以會出錯
"雙引號熬词,同單引號旁钧。
*星號,查詢?nèi)?/p>
---------------------------------------------------------------------------------------華麗麗的分割線--------------------------------------------------------------------------------
眾所周知互拾,測試的時候?qū)δ承┨厥庾址枰貏e留意歪今。在上周報了一個單引號的bug后,我和開發(fā)人員一起討論了一下對于OracleDB的敏感字符颜矿,總結(jié)如下寄猩。
對于Oracle DB而言,查詢的時候需要注意:
1.如果查詢條件是free text骑疆,而且是模糊匹配田篇,那么要注意測試以下特殊字符:
Group 1:數(shù)據(jù)庫開發(fā)人員需要對以下4個字符做特殊處理。所以需要測試是否已經(jīng)做了正確的處理箍铭。
_ (下劃線) : Oracle中代表占位符
表示查找含_的字符串泊柬。
%(百分號)
表示查找含%的字符串。
‘(單引號)
表示查找含'的字符串
#
表示查找含#的字符串
Group 2:通配符诈火,和需求相關(guān)兽赁。如果*和?當(dāng)作通配符處理,則不需要數(shù)據(jù)庫開發(fā)人員特殊處理冷守。如果當(dāng)作其本身這個字符刀崖,則需要處理。所以需要測試是否已經(jīng)做了正確的處理拍摇。
*(星號):
代表通配任意多個字符或數(shù)字進(jìn)行查詢
?(問號):
代表通配1個字符或數(shù)字進(jìn)行查詢
2.如果查詢條件是free text亮钦,但是精確匹配,那么要注意測試單引號充活。
3.如果是直接保存某字段或悲,那么沒有特殊字符需要注意。