私はテーブルinvoice_lines
とline_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'
それは「トレント、スタッフォードシャーオン」から始まる文字のように見えるが異なっているが、これらの行を挿入されたコード同様のクエリで見つかる数百万の他のレコードに使用されていました。
なぜこれが起こっているのか教えてください。
あなたがしようとする何かを持っている場合は、コメント欄で私を尋ねると、私はあなたに
Burton_O%はバートン%O、0行を返しました%81行が返された後、私は試しました:where line_description ilike '%1 X Hired 1100(LTR)。ダービーロード、バートン%トレント、スタッフォードシャー% 'それは81行を返したので、あなたはそのスペースについて正しいですが、何が間違っていますか? – alex23
@ alex23。 。 。おそらく2つのスペースがあります。区切り文字として '__'と' ___ 'を試して、そこにいくつの文字があるのか確認してください。 –
はい、あなたは正しいです。 'WHERE line_description = '1 X Hired 1100(LTR)。ダービーロード、バートンオントレント、スタッフォードシャー - 4日間@£2.95(2015年5月8日〜2015年8月8日)。バートンが2列目の場所を見つけた後、Grade:Mixed Municipal Waste''を2スペースで見つけました。ゴードンありがとう! – alex23