SQL使用上多列的一个REPLACE

问题描述:

我有以下查询:SQL使用上多列的一个REPLACE

SELECT * FROM MailingList 

大约有20多个列在邮件列表表,一个被称为地址。此列有一些包含逗号的字段,我需要将其删除。所以,我在我的查询更新为:

SELECT REPLACE(Address, ',', '') AS Address, * FROM MailingList 

但现在我有两个地址列。有没有办法只显示一个地址列,而仍然使用通配符(*)为所有其他列?

+0

有没有理由不能称之为“AddressNoCommas”或类似的东西? –

+0

最佳做法是避免选择*并选择您需要的列。 SSMS脚本轻松为您提供Sql查询。用*表示,否则不能有一个地址,但用正确的方式选择列可以。 – shadow

+0

我经常希望这个,但它可能不是一个好主意......我所做的是使用SSMS,选择top 1000来生成我的选择列表并替换相关列。在你的情况下,用你的替换语句替换地址字段。至少可以保存所有的输入。如果你不喜欢这种格式,你可以创建一个存储过程来以你选择的格式返回选择列表。 –

没有办法做到这一点,尽管列出你想明确的列是一个好主意。

你就可以欺骗如下查询:

  1. 获取数据到一个临时表
  2. 丢弃不需要的
  3. 得到的结果和下降临时表
的cloumns


SELECT *, REPLACE(Address, ',', '') AS Address2 
INTO #TempTable 
FROM MailingList 

ALTER TABLE #TempTable 
    DROP COLUMN [Address] 

SELECT * FROM #TempTable 
DROP TABLE #TempTable 

我同意阴影 - 避免使用通配符*如果你能...

我知道列明所有列在大表的SELECT语句是一种痛苦所以这里是一个快速的捷径您可能不知道:在SQL Server Management Studio中,浏览对象资源管理器并找到要从中选择的表(MailingList)。右键单击它以查看上下文菜单并选择“Script Table as”,然后选择“”,然后选择“新建查询编辑器窗口”。这将创建一个新的select语句,并列出每个列。将来,使用此方法创建选择语句,查询,过程等,而不是*通配符。性能更好,它看起来更好:-)

然后,你可以用替换函数解决你的别名问题。