所以我试着在一个表上创建一个强制型索引(我的列的数据类型是char(64)),我的查询如下:
char(64)
CREATE INDEX idx_column_name ON table (CAST(column_name AS INTEGER));
但是它不起作用,它给出了错误SQL Error [1064] [42000],这意味着我的语法有错误,我尝试了这么多语法,但仍然不起作用,有人能清楚地知道到底是什么问题吗?
SQL Error [1064] [42000]
fhg3lkii1#
你的陈述中有两处错误。
INTEGER
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
1条答案
按热度按时间fhg3lkii1#
你的陈述中有两处错误。
INTEGER
不是可用于CAST()的正确数据类型。请改用SIGNED或UNSIGNED。1.表达式必须用单独的括号括起来。
所以正确的语法是:
| 表|创建表格|
| - ------|- ------|
| 表名|创建表格'表格名称'('列名' varchar(64)默认值为空,KEY 'idx列名'((强制转换('列名'为无符号))))引擎= InnoDB默认字符集= utf8mb4校对= utf8mb4_0900_ai_ci|
fiddle