【发布时间】:2019-05-31 12:28:47
【问题描述】:
有一个包含地址信息的数据库表
+--------------------------------------------------------------+
| name1 | name2 | name3 | street | zip | city |
+--------------------------------------------------------------+
| 'Some name' | NULL | '' | 'Some street' | '12345' | NULL |
+--------------------------------------------------------------+
因此某些字段可能为 NULL 或空。
现在我要选择
SELECT
name1, /* 'Some name' */
name2, /* NULL */
name3, /* '' */
street, /* 'Some street' */
zip, /* '12345' */
city, /* NULL */
adr1, /* Should contain 'Some name' */
adr2, /* Should contain 'Some street' */
adr3, /* Should contain '12345' */
adr4, /* NULL */
adr5, /* NULL */
adr6 /* NULL */
FROM
adr
其中adr1 到6 代表信头行,应按name1、name2、name3、street、street、zip、city 的顺序填充,但应跳过 NULL 或赋值时为空值。
有人知道如何实现这一目标吗?
【问题讨论】:
-
你试过WHERE...吗?
-
显示您想要的预期结果。
adr1...adr6的列来自哪里? -
您能否提供更多有关期望的详细信息-您期望的结果是什么(您可以举个例子)。如果您根本不想返回空列,则可以在应用程序代码中处理。
-
这张表有主键列吗?
-
adr1到6的列是“虚拟的”。问题是如何分配它们。
标签: sql sql-server sql-server-2016