1

我想在来自其他数据库的更多表中使用不区分大小写,其中字段和索引可以不区分大小写。

这意味着我们可以以任何字符串格式(数据、数据、数据等)搜索所需的行,我们可以通过这些键中的任何一个找到它。

我尝试使用带索引的上部函数,并在主键中使用它来保留程序逻辑。

但我失败了。我没有找到任何有效的 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

恕我直言,更好的方法是通过表达式使用索引

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 回答