2016-10-17 4 views
1

私はテーブルinvoice_linesline_descriptionカラム(テキスト、utf8)を持っています。行はPHPコード(utf8)で挿入されます。最近、私は次のような問題を発見した:postgresqlのバグで、全く同じ文字列の行が見つかりません

私はpostgresの

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 %' 

を実行するとX 1100(LTR)を雇わ1 "のようなline_descriptionで81行を返しダービーの道。 、バートン・オン・トレント(Burton On Trent)、スタッフォードシャー(Staffordshire) - 週4ポンド2.95ユーロ(2015年5月8日〜2015年8月8日)グレード:混合都市廃棄物 "(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は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' 

それは「トレント、スタッフォードシャーオン」から始まる文字のように見えるが異なっているが、これらの行を挿入されたコード同様のクエリで見つかる数百万の他のレコードに使用されていました。

なぜこれが起こっているのか教えてください。

  • enter image description here

  • enter image description here

あなたがしようとする何かを持っている場合は、コメント欄で私を尋ねると、私はあなたに

答えて

4

がこれは結果を教えてあげますコメントが長すぎます。

私の推測では、' 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」であるかもしれません。

(そして、私は言葉を組み込む方法を見つけたいの答えに、私は1を考えることはできません「hopyardsが意図されているもののために言って」。)

+0

Burton_O%はバートン%O、0行を返しました%81行が返された後、私は試しました:where line_description ilike '%1 X Hired 1100(LTR)。ダービーロード、バートン%トレント、スタッフォードシャー% 'それは81行を返したので、あなたはそのスペースについて正しいですが、何が間違っていますか? – alex23

+1

@ alex23。 。 。おそらく2つのスペースがあります。区切り文字として '__'と' ___ 'を試して、そこにいくつの文字があるのか​​確認してください。 –

+0

はい、あなたは正しいです。 'WHERE line_description = '1 X Hired 1100(LTR)。ダービーロード、バートンオントレント、スタッフォードシャー - 4日間@£2.95(2015年5月8日〜2015年8月8日)。バートンが2列目の場所を見つけた後、Grade:Mixed Municipal Waste''を2スペースで見つけました。ゴードンありがとう! – alex23

関連する問題