Tsql 在列包含数字的位置切换列数据?

Tsql 在列包含数字的位置切换列数据?,tsql,Tsql,我有一个有3列的表 身份证、公司和地址 我今天发现了一个错误,它将地址保存在公司列中,有时将公司保存在地址列中。我已经纠正了这个错误,现在我正在尝试将数据放在正确的位置 每个地址中都有一个数字,所以我猜最简单的方法是,如果公司列中有一个数字,就切换地址和公司列(如果公司的真实名称中应该有一个数字,那就没那么重要了:p) 我应该如何在TSQL中编写它?我不确定在这里这样做是否正确,但因为我想不出任何其他替代方法,所以应该这样做 Update dbo.MyTable Set Company = Ad

我有一个有3列的表

身份证、公司和地址

我今天发现了一个错误,它将地址保存在公司列中,有时将公司保存在地址列中。我已经纠正了这个错误,现在我正在尝试将数据放在正确的位置

每个地址中都有一个数字,所以我猜最简单的方法是,如果公司列中有一个数字,就切换地址和公司列(如果公司的真实名称中应该有一个数字,那就没那么重要了:p)


我应该如何在TSQL中编写它?

我不确定在这里这样做是否正确,但因为我想不出任何其他替代方法,所以应该这样做

Update dbo.MyTable
Set Company = Address,
    Address = Company
Where Company like '%[0-9]%'

您可以尝试这样做:如果公司地址已经包含一个数字,我会提供一个简单的保护来避免交换

insert into COMPANY (NAME, ADDRESS) 
VALUES ('2 bld d''Italie' , 'CA') , 
('Take 2' , 'anselmo street 234') , 
('Microsoft' , '1 Microsoft Way Redmond'), 
('lake street 14' , 'Norton'), 
('lake street 17' , 'trendMicro');

SELECT * FROM COMPANY

UPDATE COMPANY set NAME = ADDRESS, ADDRESS = NAME
WHERE NAME like '%[0-9]%' and (ADDRESS not like '%[0-9]%')

SELECT * FROM COMPANY
您可能会注意到take 2线不会被交换