我想在来自其他数据库的更多表中使用不区分大小写,其中字段和索引可以不区分大小写。
这意味着我们可以以任何字符串格式(数据、数据、数据等)搜索所需的行,我们可以通过这些键中的任何一个找到它。
我尝试使用带索引的上部函数,并在主键中使用它来保留程序逻辑。
但我失败了。我没有找到任何有效的 SQL 语句来定义它。
也许这是一个不可能的任务?或者你知道我用“上”索引定义主键的方式吗?
感谢您提供任何信息!
我想在来自其他数据库的更多表中使用不区分大小写,其中字段和索引可以不区分大小写。
这意味着我们可以以任何字符串格式(数据、数据、数据等)搜索所需的行,我们可以通过这些键中的任何一个找到它。
我尝试使用带索引的上部函数,并在主键中使用它来保留程序逻辑。
但我失败了。我没有找到任何有效的 SQL 语句来定义它。
也许这是一个不可能的任务?或者你知道我用“上”索引定义主键的方式吗?
感谢您提供任何信息!
如果你想做不区分大小写的搜索,你应该使用不区分大小写的排序规则。如果您总是希望以不区分大小写的方式处理字段的值,您应该在字段级别定义它,即
CREATE TABLE T (
Foo VARCHAR(42) CHARACTER SET UTF8 COLLATE UNICODE_CI,
...
)
但您也可以在搜索时指定排序规则,例如
SELECT * FROM T WHERE Foo = 'bar' COLLATE UNICODE_CI
在 Firebird 的语言参考中阅读有关可用排序规则的更多信息。
恕我直言,更好的方法是通过表达式使用索引
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