0

有什么方法可以转换一列并能够在不明确命名的情况下引用所有其他列?

通常我会这样做:

SELECT
      ,[Id]
      ,[Name]
      ,CONVERT(VARCHAR(10),[CreateDate], 104) as [CreateDate] 
  FROM Customers

在完美世界中我能做的是:

SELECT
      *
      ,CONVERT(VARCHAR(10),[CreateDate], 104) as [CreateDate] 
  FROM Customers

其中 * 表示查询中未明确说明的所有列。

是否有一个关键字可以做到这一点,还是有其他方法?请记住,它必须在查询中是可行的——不能更改表、制作视图、SP 或其他东西。

4

2 回答 2

2

没有一种编程方式可以说“除此之外的所有列”,除非您想sys.columns根据您提供查询的列表构建动态 SQL(从查询中动态导出引用列的列表将非常困难,尤其是当您引入连接、where 子句等时)。

但是有一种非常简单的方法可以做到这一点,而无需全部输入。只需在对象资源管理器中展开您的表,然后将“列”节点拖到查询编辑器窗口中。现在只需从列表中删除 CreateDate 列。

于 2012-06-04T15:44:05.597 回答
0

为了避免输入一长串字段,我喜欢做的是在编辑器中选择表名,然后按 alt-f1。这与键入“sp_help table”是一回事。您将获得一个包含该表所有列名的结果集。我将该列表复制到编辑器中并添加逗号。

使用编辑器中的搜索和替换在所有行的末尾添加逗号的简单方法:

  1. 仅选择具有列名的行。
  2. 选中“使用”并从下拉列表中选择“正则表达式”。
  3. 在“查找内容”中输入 $(美元符号表示行尾)
  4. 在“替换为”类型中,

这将在每个选定行的末尾添加一个逗号。

另一种方法是右键单击对象资源管理器中的表,然后单击“选择前 1000 个”选项,这将在另一个文本编辑器窗口中为您创建一个脚本。

于 2012-06-04T15:55:56.847 回答