测试时(比如查询测试)注意的4个与mysql有关的字符 % _ ' "
%通配符,代表一个以上的字符。它在数据库中为通配符,如果客户在搜索框中输入“%”,而程序未对输入的字符进行转义,在系统将解释为一个通配符,列出所有结果,而不是只含“%”的数据,一般需要解释为“\%”,才可正常搜索出
_通配符,代表单个字符。其原理和“%”符时一样的,大概学过SQL语句的人都知道像这样的句子:
SELECT * FROMStundent WHERE City LIKE 'Ne%',SELECT * FROMStundent WHERE LastName LIKE 'C_r_er' 其中%和_都是通配符,所以未经处理的%和_就会解释为此处的通配符来
'单引号,因SQL语句的字符串是用单引号,如果保存或查询时,输入“'”系统未经处理,就会解释为SQL语句的中字符串的单引号,所以会出错
"双引号,同单引号。
*星号,查询全部
---------------------------------------------------------------------------------------华丽丽的分割线--------------------------------------------------------------------------------
众所周知,测试的时候对某些特殊字符需要特别留意。在上周报了一个单引号的bug后,我和开发人员一起讨论了一下对于OracleDB的敏感字符,总结如下。
对于Oracle DB而言,查询的时候需要注意:
1.如果查询条件是free text,而且是模糊匹配,那么要注意测试以下特殊字符:
Group 1:数据库开发人员需要对以下4个字符做特殊处理。所以需要测试是否已经做了正确的处理。
_ (下划线) : Oracle中代表占位符
表示查找含_的字符串。
%(百分号)
表示查找含%的字符串。
‘(单引号)
表示查找含'的字符串
#
表示查找含#的字符串
Group 2:通配符,和需求相关。如果*和?当作通配符处理,则不需要数据库开发人员特殊处理。如果当作其本身这个字符,则需要处理。所以需要测试是否已经做了正确的处理。
*(星号):
代表通配任意多个字符或数字进行查询
?(问号):
代表通配1个字符或数字进行查询
2.如果查询条件是free text,但是精确匹配,那么要注意测试单引号。
3.如果是直接保存某字段,那么没有特殊字符需要注意。