可以在MySQL上创建强制转换索引吗?

vatpfxk5  于 2023-02-15  发布在  Mysql
关注(0)|答案(1)|浏览(105)

所以我试着在一个表上创建一个强制型索引(我的列的数据类型是char(64)),我的查询如下:

CREATE INDEX idx_column_name ON table (CAST(column_name AS INTEGER));

但是它不起作用,它给出了错误SQL Error [1064] [42000],这意味着我的语法有错误,我尝试了这么多语法,但仍然不起作用,有人能清楚地知道到底是什么问题吗?

fhg3lkii

fhg3lkii1#

你的陈述中有两处错误。

  1. INTEGER不是可用于CAST()的正确数据类型。请改用SIGNED或UNSIGNED。
    1.表达式必须用单独的括号括起来。
    所以正确的语法是:
CREATE TABLE table_name (column_name VARCHAR(64));
CREATE INDEX idx_column_name ON table_name ( (CAST(column_name AS UNSIGNED)) );
SHOW CREATE TABLE table_name;

| 表|创建表格|
| - ------|- ------|
| 表名|创建表格'表格名称'('列名' varchar(64)默认值为空,KEY 'idx列名'((强制转换('列名'为无符号))))引擎= InnoDB默认字符集= utf8mb4校对= utf8mb4_0900_ai_ci|
fiddle

相关问题