1

フィールドとインデックスが大文字と小文字を区別しない可能性がある他の DB から取得したテーブルで、大文字と小文字を区別しない機能を使用したいと考えています。

これは、必要な行を任意の文字列形式 (DAta、Data、data など) で検索できることを意味し、これらのキーのいずれかで検索できます。

インデックスでアッパー関数を使用しようとし、これを主キーで使用してプログラムロジックを保持しようとしました。

しかし、私はそれで失敗しました。それを定義する有効な SQL ステートメントが見つかりませんでした。

多分それは不可能な使命ですか?または、「上位」インデックスで主キーを定義する方法を知っていますか?

情報をありがとう!

4

2 に答える 2

3

大文字と小文字を区別しない検索を行いたい場合は、大文字と小文字を区別しない照合を使用することになっています。大文字と小文字を区別しない方法でフィールドの値を常に扱いたい場合は、フィールドレベルで定義する必要があります。

CREATE TABLE T (
  Foo VARCHAR(42) CHARACTER SET UTF8 COLLATE UNICODE_CI,
  ...
)

ただし、次のように検索で照合を指定することもできます

SELECT * FROM T WHERE Foo = 'bar' COLLATE UNICODE_CI

利用可能な照合順序について詳しくは、Firebird の言語リファレンス を参照してください

于 2013-04-30T15:07:24.780 に答える
0

IMHOより良い方法は、式でインデックスを使用することです

create index idx_upper on persons computed by (upper(some_name))

SQL クエリ

select * from persons order by upper(some_name);
select * from persons where upper(some_name) starting with 'OBAM';

インデックス idx_upper を使用します

于 2013-05-01T07:06:24.040 に答える