HTTP请求更新DB后无法匹配输入值与数据库值求助
问题排查方案
你遇到的这种打印内容一致但匹配失败的情况,大概率是隐形差异导致的,给你几个排查方向:
检查数据类型是否一致
别只看显示内容,得确认两个值的类型是否相同。比如输入是字符串,数据库存的是数字,打印出来都是"123",但类型不同肯定匹配不上。可以用语言自带的类型检测方法,比如JS里的typeof,Python里的type(),把两者的类型打出来对比。排查隐形字符
很多时候打印看不到的空格、换行、制表符,甚至全角空格,都会导致匹配失败。试试这两个操作:- 把两个值都做前后空白去除,比如JS用
trim(),Python用strip(),处理完再匹配试试。 - 打印每个字符的编码值,比如JS里写
Array.from(inputVal).map(c => c.charCodeAt(0)),Python里遍历每个字符用ord(),对比两个数组的每一项,就能找到不一样的地方。
- 把两个值都做前后空白去除,比如JS用
确认编码一致性
要是数据库和程序的编码不统一,比如一个带UTF-8 BOM一个不带,也会出现表面相同实际不匹配的情况。检查下数据库的编码设置,还有程序处理字符串时的编码是否一致。直接对比DB原始值
用SQL语句直接从数据库里把值查出来,复制到文本编辑器里和输入值逐字符对比,或者开启编辑器的“显示所有字符”功能,看看有没有隐形的换行、空格之类的内容。
内容的提问来源于stack exchange,提问作者Madhu Manohar
相关产品推荐
相关产品推荐

