2016-05-06 7 views
1

私は、テーブルエントリ内の特定の文字列の一部を見つける方法を検索します。 フィールドは、表のvarcharです。MySQL:列が指定された文字列の一部である行を選択します。

/ブランド/ブランド/ actona /キッチン-記事/アイテム/ 01945

を検索し、この行を見つけたい:

/brands/brand/actona/$ 

- または多分この行

/brands/brand/actona/kitchen-$ 

この問題を解決する方法はありますか?問題は、テーブルに少なくとも57kのエントリがあることです。私は古い(大きすぎる)nginx-configファイルからデータをインポートします。これらはすべて永続的なリダイレクトです。

更新日: 「LIKE」とは正反対に必要なのは、検索対象の文字列の一部だけがワイルドカード($)付きの表に格納されているためです。同じ。 /brands/brand/actona/$/brands/brand/actona/123と一致することができますが、/brands/brand/actona/abc/defも一致します。

は、だから私は/brands/brand/actona/abc/defを検索したとき、あるいは/brands/brand/actona/abc/def/xyzそれは、行、私は実際には各リクエストに応じて6メガバイトの設定ファイルを確認し避けるためにnginx.configファイルから57K永久リダイレクトをアウトソーシングしよう/brands/brand/actona/$

に一致する必要があります。

私は私のひどい英語ごめんなさい:(

+3

についてのあなたのquesitonイマイチが明確のようなもの。あなたが検索したいどのようなどこで検索していますか?\t [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask)をお読みください \t \tここには、[** START **](http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum /)を使用して質問品質を改善し、より良い回答を得る方法を学びます。 [**最小限で完全で検証可能なサンプルの作成方法**](http://stackoverflow.com/help/mcve) –

+1

「LIKE」を見てください。 – jarlh

+0

列の意味は、指定された文字列の一部です。あなたが与えた例は、 '/ brand/brand/actona /'の後に一致する値を見つけたいことを明確に示しているので、 'select * from table where column_name like '/ brands/brand/actona /%';'を使うべきです。お役に立てれば。 – AbhiNickz

答えて

2

おそらく

SELECT * FROM TABLE 
WHERE '/brands/brand/actona/kitchen-article/item/01945' 
LIKE CONCAT('%', URLCOLUMN, '%'); 
+0

これは、$ –

+0

のために与えられた2つの例と一致しません。ああ、私は実際にOPに '$'の理由を尋ねる必要があります。またはOPのお金がかかっていますか? xD –

+0

あなたは正しいLFlareです、私は質問を間違って読んでいました。 – Webeng

0

どのようにこのような何か?

SELECT * FROM table 
WHERE 
column REGEXP '(/[a-zA-Z0-9-]+)+\$?' 
関連する問題