これはSQL Server
のためですが、あなたは、単にPostrgeSQL
に変更されます:
DECLARE @f VARCHAR(MAX) = 'paint'
DECLARE @t TABLE (v VARCHAR(MAX))
INSERT INTO @t
VALUES ('Building Maintenance - Painting'),
('Paint Expense'),
('Painting Supplies')
SELECT * ,
CASE WHEN (v LIKE @f + ' %'
OR v LIKE '% ' + @f
OR v LIKE '% ' + @f + ' %'
) THEN 1
WHEN v LIKE @f + '%' THEN 2
WHEN v LIKE '%' + @f + '%' THEN 3
ELSE 4
END AS ordering
FROM @t
ORDER BY ordering
出力:
v ordering
Paint Expense 1
Painting Supplies 2
Building Maintenance - Painting 3
は、最初は'paint ...'
または'... paint'
または'... paint ...'
のような完全一致です。
第2:'paint...'
。
第3:'...paint...'
。
またorder
句で直接これを行うことができます:
SELECT *
FROM @t
ORDER BY CASE WHEN (v LIKE @f + ' %'
OR v LIKE '% ' + @f
OR v LIKE '% ' + @f + ' %'
) THEN 1
WHEN v LIKE @f + '%' THEN 2
WHEN v LIKE '%' + @f + '%' THEN 3
ELSE 4
END
があなたの意図したテーブル構造は何ですか?どの言語を使用していますか?結果はどのように表示されるべきですか(ウェブページ/アプリケーション/何でも)?これまでに何を試しましたか? – dhke
@dhke私はこのためにPHPを使用しています。テーブル構造はid、account_number、account_nameのように単純です。私は "塗装"それはaccount_nameフィールドに格納されている3つの項目の上にリストする必要があります入力すると、私は完全なsearchboxを持っています。 – Abhijit
こんにちは、この質問は、あなたがあなたのコードで持っている特定の問題をレイアウトしておらず、他の人が自分のもので持っているかもしれないので、サイトにはあまり適していません。代わりに、誰かがあなたのためにコードを書くという要求のように読み込まれます。それはフリーランスサイトで仕事のスペックとして機能しますが、誰かが無料であなたにそれを与えることを期待しています。 – IMSoP