Sql server 如何修剪SQL中的空地址值
我有一个表(相当标准),它有以下列Sql server 如何修剪SQL中的空地址值,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个表(相当标准),它有以下列 ADDRESS1 ADDRESS2 ADDRESS3 ADDRESS4 POSTCODE 我想要一些T-SQL,我可以应用它来删除空值并将值上移(我希望尽可能避免使用游标和循环) 所以如果我的数据是 ID ADDRESS1 ADDRESS2 ADDRESS3 ADDRESS4 POSTCODE ----------------------------------------------------- 1 50 The Street NULL
ADDRESS1
ADDRESS2
ADDRESS3
ADDRESS4
POSTCODE
我想要一些T-SQL,我可以应用它来删除空值并将值上移(我希望尽可能避免使用游标和循环)
所以如果我的数据是
ID ADDRESS1 ADDRESS2 ADDRESS3 ADDRESS4 POSTCODE
-----------------------------------------------------
1 50 The Street NULL The Town The City AB12 3GG
2 100 Avenue Townsville NULL Metropolis SG33 5WW
3 My House NULL NULL FutureCity KL21 6TT
它变成
ID ADDRESS1 ADDRESS2 ADDRESS3 ADDRESS4 POSTCODE
-----------------------------------------------------
1 50 The Street The Town The City NULL AB12 3GG
2 100 Avenue Townsville Metropolis NULL SG33 5WW
3 My House FutureCity NULL NULL KL21 6TT
(即:所有非空值向左移动,但邮政编码保持不变)
非常感谢我想你需要三条更新语句来从每一列中转移出来
UPDATE YourTable
SET ADDRESS1 = ADDRESS2,
ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS1 IS NULL
GO
UPDATE YourTable
SET ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS2 IS NULL
GO
UPDATE YourTable
SET ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS3 IS NULL
GO
我认为您需要三个update语句来从每一列转换
UPDATE YourTable
SET ADDRESS1 = ADDRESS2,
ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS1 IS NULL
GO
UPDATE YourTable
SET ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS2 IS NULL
GO
UPDATE YourTable
SET ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS3 IS NULL
GO
我认为您需要三个update语句来从每一列转换
UPDATE YourTable
SET ADDRESS1 = ADDRESS2,
ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS1 IS NULL
GO
UPDATE YourTable
SET ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS2 IS NULL
GO
UPDATE YourTable
SET ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS3 IS NULL
GO
我认为您需要三个update语句来从每一列转换
UPDATE YourTable
SET ADDRESS1 = ADDRESS2,
ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS1 IS NULL
GO
UPDATE YourTable
SET ADDRESS2 = ADDRESS3,
ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS2 IS NULL
GO
UPDATE YourTable
SET ADDRESS3 = ADDRESS4,
ADDRESS4 = NULL
WHERE ADDRESS3 IS NULL
GO
没有问题,不需要循环或光标 使用“更新自”并每次检查值本身或级别以上的值
示例:没有问题,不需要循环或光标 使用“更新自”并每次检查值本身或级别以上的值
示例:没有问题,不需要循环或光标 使用“更新自”并每次检查值本身或级别以上的值
示例:没有问题,不需要循环或光标 使用“更新自”并每次检查值本身或级别以上的值 示例:由“Low Chie Mun”提供的解决方案几乎是正确的。如果只有一个地址为null,那么这是正确的,但是您已经像下面那样调用了update语句3次(对于3个地址为null的情况) “Low Chie Mun”提供的解决方案几乎是正确的。如果只有一个地址为null,那么这是正确的,但是您已经像下面那样调用了update语句3次(对于3个地址为null的情况) “Low Chie Mun”提供的解决方案几乎是正确的。如果只有一个地址为null,那么这是正确的,但是您已经像下面那样调用了update语句3次(对于3个地址为null的情况) “Low Chie Mun”提供的解决方案几乎是正确的。如果只有一个地址为null,那么这是正确的,但是您已经像下面那样调用了update语句3次(对于3个地址为null的情况)
我想你必须使用这里的案例陈述。。。对于那些如果有空值就要向左或向右移动的列…我不明白你所说的移位是什么意思。您正在检索列,对吗?还是将所有内容连接到一个stirng中?是要更改表中的永久数据,还是只在
选择过程中移动数据?@Damien_the_unsiver(和其他人)-抱歉,不清楚-更新表我想您必须在此处使用CASE语句。。。对于那些如果有空值就要向左或向右移动的列…我不明白你所说的移位是什么意思。您正在检索列,对吗?还是将所有内容连接到一个stirng中?是要更改表中的永久数据,还是只在选择过程中移动数据?@Damien_the_unsiver(和其他人)-抱歉,不清楚-更新表我想您必须在此处使用CASE语句。。。对于那些如果有空值就要向左或向右移动的列…我不明白你所说的移位是什么意思。您正在检索列,对吗?还是将所有内容连接到一个stirng中?是要更改表中的永久数据,还是只在选择过程中移动数据?@Damien_the_unsiver(和其他人)-抱歉,不清楚-更新表我想您必须在此处使用CASE语句。。。对于那些如果有空值就要向左或向右移动的列…我不明白你所说的移位是什么意思。您正在检索列,对吗?还是将所有内容连接到一个stirng中?是要更改表中的永久数据,还是只在选择过程中移动数据?@Damien\u不信者(和其他人)-很抱歉不清楚-更新表格谢谢@Kiran-我想我会采用这种方法并修改以应对连续空列hanks@Kiran-我想我会采用这种方法并修改以应对连续空列hanks@Kiran-我想我会采用这种方法并修改以应对连续空列hanks@Kiran-我想我会采用这种方法,并修改以应对连续的空列。我的答案仅供参考,稳定,你可以在一个查询中生成3条update语句也很酷,我的答案仅供参考,稳定,你可以在一个查询中生成3条update语句也很酷,我的答案仅供参考,稳定,您可以在一个查询中生成3条update语句,这也很酷,我的答案仅供参考,很稳定,您可以在一个查询中生成3条update语句