MySQL如何查询名称格式特殊的Date、Double等类型字段数据
错误原因
- MySQL 没有名为
DOUBLE()的内置类型转换函数,不能直接用该写法对字段做类型转换 - 你尝试查询的
('Close', '')字段在表中不存在,表内所有和Close相关的字段都附带了股票代码后缀,比如('Close', 'ABBV') - 多个查询字段之间没有用英文逗号分隔,触发语法错误
正确查询写法
直接查询原始值
如果不需要额外做类型转换,仅需把特殊字段名用反引号(`)完整包裹,多个字段用英文逗号分隔即可:
-- 示例:查询日期 + ABBV的收盘价 + Symbol字段 SELECT DATE(`('Date', '')`), `('Close', 'ABBV')`, `('Symbol', '')` FROM data;
显式类型转换(如有需要)
如果你确实需要把字段显式转换为Double类型,可以使用MySQL标准的CAST/CONVERT函数:
SELECT DATE(`('Date', '')`) AS trade_date, CAST(`('Close', 'ABBV')` AS DOUBLE) AS abbv_close_price, CAST(`('Volume', 'ABBV')` AS UNSIGNED) AS abbv_trade_volume FROM data;
额外建议
当前表的字段命名非常不规范,后续建议对表结构做重构,把字段名调整为常规格式(比如trade_date、close_abbv、high_abt等),避免每次查询都要处理特殊格式的字段名,减少语法出错概率。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

