CAST function should support INT synonym for …
2018-06-17 23:04:05来源:未知 阅读 ()
Login / Register
Bug #73054 | CAST function should support INT synonym for SIGNED. i.e. CAST(y AS INT) | ||
---|---|---|---|
Submitted: | 19 Jun 2014 15:55 | Modified: | 30 Jun 2014 11:12 |
Reporter: | Morgan Tocker | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S4 (Feature request) |
Version: | OS: | Any | |
Assigned to: | |||
Triage: | Needs Triage: D5 (Feature request) |
- View
- Add Comment
- Files
- Developer
- Edit Submission
- View Progress Log
- Contributions
Thanks for reporting this, Morgan. Some additional notes on my motivation (in the original Tweet). All other SQL dialects support the same type notation for CAST expressions as for column specifications in DDL. Concretely (citing parts from SQL-92): General definition of <data type> --------------------------------- <data type> ::= <character string type> [ CHARACTER SET <character set specification> ] | <national character string type> | <bit string type> | <numeric type> | <datetime type> | <interval type> <character string type> ::= CHARACTER [ <left paren> <length> <right paren> ] | CHAR [ <left paren> <length> <right paren> ] | CHARACTER VARYING <left paren> <length> <right paren> <data type> can be used in <cast specification>... -------------------------------------------------- <cast specification> ::= CAST <left paren> <cast operand> AS <cast target> <right paren> <cast target> ::= <domain name> | <data type> ... and also in <table definitions> ----------------------------------- <table definition> ::= CREATE [ { GLOBAL | LOCAL } TEMPORARY ] TABLE <table name> <table element list> <table element list> ::= <left paren> <table element> [ { <comma> <table element> }... ] <right paren> <table element> ::= <column definition> | <table constraint definition> <column definition> ::= <column name> { <data type> | <domain name> } MySQL has its own way of dealing with data types when used in a <cast specification>. Apart from possibly historic reasons, it is unclear why there are two sets of data types that cannot be used interchangeably. Obviously, this is not limited to INT types, but to all supported data types, which should be supported as <cast targets>.
Hello Morgan, Thank you for the feature request! // Oracle Database 11g SQL> SELECT CAST ('5' AS INT) from dual; CAST('5'ASINT) -------------- 5 SQL> SELECT * FROM V$VERSION; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production PL/SQL Release 11.2.0.2.0 - Production CORE 11.2.0.2.0 Production TNS for 32-bit Windows: Version 11.2.0.2.0 - Production NLSRTL Version 11.2.0.2.0 - Production SQL> // MySQL 5.7 mysql> SELECT CAST('5' as INT); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT)' at line 1 mysql> mysql> SELECT CAST('5' as SIGNED); +---------------------+ | CAST('5' as SIGNED) | +---------------------+ | 5 | +---------------------+ 1 row in set (0.00 sec) mysql> Thanks, Umesh
I think we miss some other things here. MySQL has several sizes of int apart from them being signed or unsigned. So the CAST() function should really be able to convert to these specific types as the resultant value may later be used in a comparison. So probably we should have CAST( XXXX AS [unsigned] (big|medium|tiny|)int ) to be clearer here and to catch out of value cast conversions which probably at least in strict mode should generate an error. I also miss the possibility of CASTing into a timestamp(X) value as these days we may find that useful. The reason for the CAST() as far as I can see is to force the resultant type to be something very specific so that anywhere the value is later used there's no doubt what type and size it has.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MySQL CAST与CONVERT 函数的用法 2018-07-13
- MySQL基础教程11 —— 函数之Cast函数和操作符 2018-07-13
- 翻译:window function(已提交到MariaDB官方手册) 2018-06-18
- 翻译:CREATE FUNCTION语句(已提交到MariaDB官方手册) 2018-06-18
- MySql is marked as crashed and should be repaired问题 2018-06-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash