問題
今天同事發(fā)給我一個(gè)字符串是一串?dāng)?shù)字需要到數(shù)據(jù)庫中進(jìn)行匹配,可是在數(shù)據(jù)庫中卻無法查詢到該字符串,而其確實(shí)是真真實(shí)實(shí)存在的(著實(shí)詭異)
例子如下:
可以復(fù)制有問題語句在sql中模擬復(fù)現(xiàn)
-- 有問題語句
SELECT * from api_seller_account where phone_number = '1xxxxxxxx77'
-- 正常語句
SELECT * from api_seller_account where phone_number = '1xxxxxxxx77'
解決
通過肉眼觀察完全看不出問題所在,一度讓人感到詫異
原因是因?yàn)?第一個(gè)語句的數(shù)字部分包含了零寬空格,雖然是空格,通過長(zhǎng)度可以發(fā)現(xiàn)長(zhǎng)了1位,但是通過肉眼卻沒有辦法識(shí)別
解決辦法是如果出現(xiàn)這樣的問題可以通過如下網(wǎng)站對(duì)數(shù)據(jù)進(jìn)行一下urlEncode()編碼一下,就會(huì)發(fā)現(xiàn)多出的零寬空格
http://tool.chinaz.com/tools/urlencode.aspx

image.png
會(huì)發(fā)現(xiàn)多出數(shù)據(jù)如下:

image.png