4

11番目の文字にアンダースコア文字が含まれるすべてのレコードを選択したいので、これを試してみます。

SELECT * FROM "BOM_SUB_LEVEL" where TOP_CODE like '%%%%%%%%%%_%%%'

しかし、これは期待どおりに機能しません、誰かが助けることができますか?

4

7 に答える 7

15

「SUBSTRING」関数を使用するだけです:

SELECT * FROM "BOM_SUB_LEVEL" where SUBSTRING(TOP_CODE, 11, 1) = "_"

マーク

于 2009-08-13T19:22:45.667 に答える
11

1文字のワイルドカードの場合は、を使用します_。複数文字のワイルドカードの場合は、を使用します%。の「実際の」外観を回避するには_、を使用します\_(Billに感謝します)。

次のコードを試してください。

SELECT * FROM "BOM_SUB_LEVEL" where TOP_CODE like '___________\_%'

Davのコメントに続いてさらに詳しく説明すると、定義上「%」は複数の文字をカバーするため、「%%%」は「%」とまったく同じであることに注意してください。

于 2009-08-13T19:22:03.533 に答える
2

pervasiveは、_を使用して任意の単一文字に一致し、\_を使用して実際にアンダースコアに一致します。

したがって、選択は次のようになります。

SELECT * FROM "BOM_SUB_LEVEL" where TOP_CODE like '___________\_%' 
于 2009-08-13T19:25:57.830 に答える
1

LIKE%は任意の数の文字を意味します。LIKE_を使用して1つだけを意味します。アンダースコアを探しているので、!でエスケープする必要があります。

SELECT * FROM BOM_SUB_LEVEL WHERE TOP_CODE LIKE '__________!_%'
于 2009-08-13T19:24:19.313 に答える
0

%は文字ごとのワイルドカードではなく、文字列のワイルドカードの最初と最後です。

つまり、「車」が含まれるすべての行を検索する場合は、次のようにします。

myTableから*を選択します。myColLIKE'%car%'

車で始まった行だけが必要な場合:

myTableから*を選択します。myColLIKE'car%'

そして車で終わった:

myTableから*を選択します。myColLIKE'%car'

于 2009-08-13T19:23:35.790 に答える
0

%はワイルドカードであり、文字または文字の組み合わせを置き換えることができます。使用する ?代わりに、単一の文字を置き換えます。

于 2009-08-13T19:23:41.920 に答える
0

あなたは次のようなことを試すことができます:(数字で遊んでください、私はテストするために普及していません)

SELECT * 
  FROM BOM_SUB_LEVEL 
 where SUBSTRING(TOP_CODE, 11,1) = '-'
于 2009-08-13T19:25:14.430 に答える