1

ばかげているように聞こえるかもしれませんが、私はただ興味があります。

次の名前のテーブルがありますposts

+---------+------------------+------+-----+------ ---+----------------+
| | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ |
+---------+------------------+------+-----+------ ---+----------------+
| | ID | int(10) 符号なし | いいえ | PRI | ヌル | auto_increment |
| | タイトル | varchar(50) | はい | | | ヌル | | |
| | ボディ | テキスト | はい | | | ヌル | | |
| | 作成 | 日時 | はい | | | ヌル | | |
| | 変更された | 日時 | はい | | | ヌル | | |
+---------+------------------+------+-----+------ ---+----------------+

その価値:

+----+-----------------------+-------------------- ------+---------------------+--------------------- --------------+
| | ID | タイトル | ボディ | 作成 | 変更された |
+----+-----------------------+-------------------- ------+---------------------+--------------------- --------------+
| | 2 | またまたタイトル!!!| | そして投稿本文が続きます。トラララララ | 2013-06-03 13:13:44 | 2013-06-05 09:36:51 |
| | 3 | タイトルの逆襲 | これは本当にエキサイティングです!いいえ。| | 2013-06-03 13:13:46 | ヌル |
| | 11 | トムキャット | トミーくん!!!FFF | 2013-06-04 16:33:22 | 2013-06-04 16:48:40 |
| | 12 | FFD | dsfdsf | 2013-06-04 16:48:56 | 2013-06-04 16:55:50 |
| | 13 | fdf | dfdsf | 2013-06-04 16:57:47 | 2013-06-05 09:36:54 |
| | 14 | GGD | dsfdsf | 2013-06-04 17:02:33 | 2013-06-04 17:02:33 |
| | 15 | GG# | dsfdsfff322 | 2013-06-05 09:36:20 | 2013-06-05 09:36:28 |
+----+-----------------------+-------------------- ------+---------------------+--------------------- --------------+

ThFIELDに関係なく、値を持つ行(大文字と小文字を区別しない)を検索したいとしましょう。これはクイック検索機能を作るようなものです。

通常、私は次のようなことをします:SELECT * FROM posts WHERE title LIKE '%Th%' OR body LIKE '%Th%'

明らかにそれらの値を受け入れないため、他のフィールドは含めませんでした。

これへのショートカットがあるかどうか知りたいですか?のようにSELECT * FROM posts LIKE '%Th%'

お知らせ下さい。ありがとう。

4

5 に答える 5

2

単純な古い SQL を使用して、含めたいすべての列名を指定する必要があります。

さらに検索ボックスのような動作が必要な場合は、MySQL のフルテキスト関数を参照することをお勧めします。見る:

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

于 2013-06-06T00:42:58.763 に答える
2

SQL 言語は、スキーマが既知であるという前提に基づいています。したがって、「任意の列を検索」タイプの機能はありません。テキスト以外の列に対してどのように機能しますか? 異なる照合順序の列はどうですか? 言語に機能がないことは別として、列を指定することは次の開発者にあなたの意図を表し、何よりも優先すべき考慮事項であることを示します。

于 2013-06-06T00:44:01.673 に答える
0

いいえ、where 句を使用するための近道はありません。および列を指定します。そうしないと、クエリ エンジンは、where 句で指定しない限り、何をフィルター処理し、どの列をフィルター処理するかを認識できません。

カスタム ショートカットが必要な場合は、単一のパラメーター (検索文字列) を受け取り、必要なフィールドを返す関数を作成できます。

于 2013-06-06T00:41:46.960 に答える
0

残念ながらありません。

あなたのユースケースが何であるかわからない...この代替アプローチはあなたのユースケースで機能しますか?

mysql -u{user} -p{password} -h{hostname} {database_name} -B -e "{query}" | grep "{search_string}"

データベースに接続し、指定されたクエリを実行し、クエリ結果を新しい行で返し、タブ ストップで区切られたフィールドを返します。次に、Unix ユーティリティgrepを使用して、返された行をフィルター処理します。

于 2013-06-06T00:42:18.513 に答える