2

列の値の先頭から「A」と「The」を除外しようとしています。次のように「A」で始まるアーティストを検索しています。

 AND artist LIKE LOWER('A%') AND artist NOT LIKE LOWER('A %')

問題は、これにより「A%」で始まるアーティストが表示され、「A %」で始まるアーティストが表示されず、「AA%」で始まるアーティストが除外されることです。

あるバンドが「A Apple」と名乗ることにした場合、それらは私の検索から除外されます。「AA%」を除外せずにこのクエリを実行するにはどうすればよいですか

前もって感謝します!ジェイ

4

3 に答える 3

0

これは一般的で厄介な問題であり、多くの場合、表示された名前「The Rolling Stones」の横に、「Rolling Stones、The」という形式のアーティスト名を含む2番目のフィールドを設定することで解決されます。検索は前者に対して実行されますが、結果は後者を使用して表示されます。

しかし、あなたが持っているデータで立ち往生しているなら、あなたは次のようなものが必要です:

AND UPPER(artist) LIKE 'A%'
AND ( UPPER(artist) LIKE 'A A%' OR NOT (UPPER(artist) LIKE 'A %') )
于 2012-09-24T03:05:08.733 に答える
0
AND artist LIKE ('A%')
AND (artist NOT LIKE LOWER('A %') OR artist LIKE ('A A%'))

LIKE ステートメントはパフォーマンスにあまり適していないため、これが趣味または小さなデータベース用であることを願っています。

于 2012-09-24T02:57:36.137 に答える
0

データベース構造を制御できる場合、特にこれが大規模なデータベースの場合は、検索で表示されるアーティスト名や並べ替えに使用されるアーティスト名を含む「SearchArtist」列を単純に追加する方が有益な場合があります。この方法でフルネームを表示できますが、検索可能な名前でソートできます:

アーティスト フォーム テーブルの順序を searchArtist で選択します。

そうすれば、ザ・ローリング・ストーンズがステッペンウルフの前にリストに表示されます...

于 2012-09-24T08:14:13.047 に答える