0

現在、何かを作っています。

using (var IDatabaseQuery = Lightningbolt.GetDatabaseManager().CreateQueryObject())
        {
            IDatabaseQuery.SetQuery("SELECT * FROM catalogue_baseitems WHERE name LIKE '%hc2_%' OR name LIKE '%hc3_';");
            data = IDatabaseQuery.FetchTable();
        }

それが私が使用しているものです。hc2_ と hc3_ で始まるすべてのアイテムを取得したいのですが、hc2_ で始まるアイテムのみを取得します。SQL には hc3_ で始まる項目も含まれていますが、クエリの実行中には表示されません。私は何を間違っていますか?

4

3 に答える 3

4

またはで始まる項目が必要な場合は、次の 2 つの変更を行う必要があります。hc2_hc3_

  1. %最初にthe を使用しないでください。
  2. 「任意の1文字」にマスクされるため、アンダースコアをエスケープします

次のようなことを試してください:

SELECT * FROM catalogue_baseitems WHERE name LIKE 'hc2\_%' OR name LIKE 'hc3\_%'

%hc2_%次の例のいずれかに一致することに注意してください。

  • abchc2X(先頭%とアンダースコアが一致するためX
  • hc23(アンダースコアが に一致するため3)
  • ... 等々
于 2013-05-09T20:41:25.810 に答える
2

を含む結果が必要な場合はhc2_、最初にこのまたはhc3_のような句を使用する必要があります。'hc2_%'hc3_%

を使用しているため、hc2_ の結果を取得しています。これは、文字列内の任意の場所'%hc2_%'を含む任意hc2_の文字列を返します。

クエリをこれに変更します

IDatabaseQuery.SetQuery("SELECT * FROM catalogue_baseitems WHERE name LIKE 'hc2\_%' OR name LIKE 'hc3\_%';");

を忘れないでください。underscore(_)これはワイルドカード文字です。

于 2013-05-09T20:39:47.607 に答える
1

2 番目のパーセント記号がありません:'%hc3_%'

于 2013-05-09T20:39:50.793 に答える