postgresql 错误,查询找不到具有完全相同字符串的行
postgresql bug, query can't find the row with exact same string
我有一个 table invoice_lines
和 line_description
列(文本,utf8)。这些行由 PHP 代码 (utf8) 插入。最近我发现了以下问题:
当我运行
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton _________%'
或
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton %'
postgres returns 81 行 line_description
喜欢“1 X Hired 1100 (LTR). Derby Road, Burton On Trent, Staffordshire - 4 天 @ £2.95 per week (05/08/2015 - 08/08/2015)。等级:混合城市垃圾”(日期从 2015 年到 2016 年)
但是当我运行这个:
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton On Trent%'
或
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton O%'
postgres returns 0 行.
当我尝试只获取 1 行具有精确值时,它也 returns 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" 开始的字符不同,但插入这些行的代码用于类似查询可以找到的数百万条其他记录。
你能告诉我为什么会这样吗?
如果你有什么想尝试的,请在评论区问我,我会告诉你结果
我的猜测是 ' On Trent'
不是它看起来的样子。很难找出实际问题。最有可能的罪魁祸首是“伯顿”和“特伦特”之间的步伐:
所以,看看这些是否有效:
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”。
我有一个 table invoice_lines
和 line_description
列(文本,utf8)。这些行由 PHP 代码 (utf8) 插入。最近我发现了以下问题:
当我运行
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton _________%'
或
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton %'
postgres returns 81 行 line_description
喜欢“1 X Hired 1100 (LTR). Derby Road, Burton On Trent, Staffordshire - 4 天 @ £2.95 per week (05/08/2015 - 08/08/2015)。等级:混合城市垃圾”(日期从 2015 年到 2016 年)
但是当我运行这个:
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton On Trent%'
或
SELECT * FROM invoice_lines
WHERE line_description ilike '%1 X Hired 1100 (LTR). Derby Road, Burton O%'
postgres returns 0 行.
当我尝试只获取 1 行具有精确值时,它也 returns 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" 开始的字符不同,但插入这些行的代码用于类似查询可以找到的数百万条其他记录。
你能告诉我为什么会这样吗?
如果你有什么想尝试的,请在评论区问我,我会告诉你结果
我的猜测是 ' On Trent'
不是它看起来的样子。很难找出实际问题。最有可能的罪魁祸首是“伯顿”和“特伦特”之间的步伐:
所以,看看这些是否有效:
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”。