首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB CAST或CONVERT函数无效

问MariaDB CAST或CONVERT函数无效
EN

Stack Overflow用户
提问于 2020-05-29 15:29:56
回答 1查看 481关注 0票数 0

我的表有一个varchar(64)列,当我尝试将它转换为char(36)时,它不起作用。

代码语言:javascript
复制
SELECT 
CONVERT('00edff66-3ef4-4447-8319-fc8eb45776ab',CHAR(36)) AS A,
CAST('00edff66-3ef4-4447-8319-fc8eb45776ab' AS CHAR(36)) as B 

这是desc结果

​

​

EN

回答 1

Stack Overflow用户

发布于 2020-05-29 17:24:12

它是这样的,因为它是从MySQL派生的,其中没有强制转换为VARCHAR选项。在MySQL中,仅强制转换为生成VARCHAR的CHAR。以下是MySQL 5.6中支持的选项:

https://dev.mysql.com/doc/refman/5.6/en/cast-functions.html#function_cast

请看他们明确提到的“小于N个字符的值不会出现填充”。后来,MariaDB开始添加CAST AS VARCHAR,只是为了使其与Oracle、Postgre、MSSQL等系统更具跨平台兼容性:

https://jira.mariadb.org/browse/MDEV-11283

但仍然强制转换为CHAR和强制转换为VARCHAR是相同的。我想应该是一样的。为什么需要在RAM中使用固定长度数据类型?只有当你存储它的时候,它才重要。

例如,如果您有一个CHAR数据类型的表:

代码语言:javascript
复制
    CREATE TABLE tbltest(col CHAR(10));

然后将casted插入为VARCHAR数据,例如:

代码语言:javascript
复制
    INSERT INTO tbltest(col) VALUES(CAST('test' AS VARCHAR(5)));

它将存储为CHAR(10)数据类型。因为这就是表所使用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62080836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档