我想在更多来自其他数据库的表中使用不区分大小写,其中字段和索引可以不区分大小写。
这意味着我们可以用任何字符串格式(DAta,数据,数据等)搜索所需的行,我们可以通过任何这些键找到它。
我尝试使用带索引的upper函数,并在主键中使用它来保存程序逻辑。
但我失败了。我没有找到任何有效的SQL语句来定义它。
也许这是一个不可能完成的任务? 或者您知道我使用“上限”索引定义主键的方式是什么?
感谢您的任何信息!
答案 0 :(得分:3)
如果您想进行不区分大小写的搜索,则应该使用不区分大小写的排序规则。如果您总是希望以不区分大小写的方式处理字段的值,则应在字段级别定义它,即
CREATE TABLE T (
Foo VARCHAR(42) CHARACTER SET UTF8 COLLATE UNICODE_CI,
...
)
但您也可以在搜索中指定排序规则,例如
SELECT * FROM T WHERE Foo = 'bar' COLLATE UNICODE_CI
详细了解available collations at the Firebird's language reference。
答案 1 :(得分:0)
恕我直言更好的方法是通过expresion使用索引
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