postgresql错误,查询可以';找不到字符串完全相同的行

postgresql错误,查询可以';找不到字符串完全相同的行,sql,postgresql,character-encoding,where-clause,sql-like,Sql,Postgresql,Character Encoding,Where Clause,Sql Like,我有一个表invoice\u line和line\u description列(文本,utf8)。行由PHP代码(utf8)插入。最近我发现了以下问题: 当我跑的时候 SELECT * FROM invoice_lines WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton _________%' 或 postgres返回81行,带有行描述如“1 X 1100(LTR)。斯塔福德郡特伦特伯顿德比路-4天

我有一个表
invoice\u line
line\u description
列(文本,utf8)。行由PHP代码(utf8)插入。最近我发现了以下问题:

当我跑的时候

SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton _________%'

postgres返回81行,带有
行描述
如“1 X 1100(LTR)。斯塔福德郡特伦特伯顿德比路-4天,每周2.95英镑(2015年8月5日-2015年8月8日)。等级:混合城市垃圾”(日期从2015年到2016年)

但当我运行这个:

SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton On Trent%'

postgres返回0行

当我尝试仅获取1行的精确值时,它还返回0:

SELECT * FROM invoice_lines
WHERE line_description = '1 X Hired 1100 (LTR). Derby Road, Burton On Trent, Staffordshire - 4 days @ £2.95 per week (05/08/2015 - 08/08/2015). Grade: Mixed Municipal Waste'
看起来从“On Trent,Staffordshire”开始的字符是不同的,但是插入这些行的代码被用于类似查询可以找到的数百万条其他记录

你能告诉我为什么会这样吗


如果您有什么要尝试的,请在评论部分询问我,我会告诉您结果。

评论太长了

我的猜测是《特伦特上的代码》不是它看起来的样子。很难找出实际的问题。最有可能的罪魁祸首是“伯顿”和“特伦特”之间的节奏:

那么,看看这些方法是否有效:

WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton_O%'

WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton%O%'
否则它可能是“O”


(我想找到一种方法,在答案中加入“说出hopyards的意思”,但我想不出一个。)

Burton_%返回0行,Burton%O%返回81行,然后我尝试了:行描述像“%1 X 1100(LTR)”。德比路,伯顿%在斯塔福德郡特伦特,它返回了81排,所以你对空间的看法是正确的,但是它有什么问题呢???@alex23。也许有两个空间。请尝试使用分隔符
\uuuu
\uuuu
,查看有多少个字符。是的,您是对的,
其中行描述='1 X 1100(LTR)。斯塔福德郡特伦特伯顿德比路-4天,每周2.95英镑(2015年8月5日-2015年8月8日)。等级:混合城市垃圾“
,在伯顿找到该行后有2个空格。谢谢你,戈登!
SELECT * FROM invoice_lines
WHERE line_description = '1 X Hired 1100 (LTR). Derby Road, Burton On Trent, Staffordshire - 4 days @ £2.95 per week (05/08/2015 - 08/08/2015). Grade: Mixed Municipal Waste'
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton_O%'

WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton%O%'