【问题标题】:Convert column type in SELECT result转换 SELECT 结果中的列类型
【发布时间】:2015-03-17 18:50:44
【问题描述】:

这是我的桌子:

id| name  | address | more_info
_______________________________
0 | John  | NY      | infoa
1 | Bill  | PH      | infob
2 | Bob   | KS      | infoc

其中id 类型为BIGINT

我有这个问题:

SELECT * FROM myTable

BIGINT 对于某些应用程序来说太长了,因此我想将id 检索为VARCHAR。我可以在结果集中将id 转换为VARCHAR,而不必命名我想在结果集中检索的每个特定列吗?即,我想保留实际查询SELECT *,而不必输入SELECT id, name, address 等。

【问题讨论】:

标签: mysql


【解决方案1】:

简单的回答:不。 您需要在表格和预期结果之间进行一些转换阶段/层。您可以使用将整数转换为 varchars 的视图来获得它,但由于您不愿意将耦合引入 select,我敢打赌,该视图会更糟。

另一方面,应用端可能有机会,具体取决于语言。

编辑: 如果您可以拥有一个额外的列和一个可以忽略的列(原始 id),也许这会有所帮助:

select CAST(id as CHAR(50)) as idAsVarchar, t.* FROM
(
    select * from your_table
) as t;

【讨论】:

  • 我不介意引入耦合(我认为),我只是不想命名我想要提取的每个列,除了 cast 列,因为我有大约 40 个。这可以实现吗?
  • 成功了,谢谢!但我必须在查询末尾添加as t 才能正常工作;)考虑编辑您的答案。
  • 子查询是多余的 SELECT *, CAST(id AS CHAR(50)) AS idAsVarChar FROM your_table 也可以
  • 实际上,当我查看我的答案时,这非常明显。好点子!
猜你喜欢
  • 2011-10-07
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
相关资源
最近更新 更多