我有一个表,其中包含不同深度的空值:
| 昏暗|col1| col2| col3| col4|
| --|--|--|--|--|
| v| C| B|一|NULL|
| X|一|NULL| NULL| NULL|
| y| B|一|NULL| NULL|
| z| D| C| B|一|
有谁知道我如何写一个select语句来反转和折叠NULL值?把最右边的第一个值作为最左边的新值,实现这个转换:
| 昏暗|col1| col2| col3| col4|
| --|--|--|--|--|
| v|一|B| C| NULL|
| X|一|NULL| NULL| NULL|
| y|一|B| NULL| NULL|
| z|一|B| C| D|
2条答案
按热度按时间goqiplq21#
你可以将所有列用一些列连接起来,用一些常量替换NULL,比如'null',提取null部分,反转非null部分,再次将反转的非null与null连接起来,分割得到一个数组,现在你可以将数组元素作为列,不要忘记检查null并反转每个元素以正确地获得长度超过1个字符的值:
字符串
测试结果:
型
xmq68pz92#
参见实施例
字符串
试验
| 昏暗|col1| col2| col3| col4| col1| col2| col3| col4|
| --|--|--|--|--|--|--|--|--|
| v| C| B|一|null|一|B| C| null|
| X|一|null| null| null|一|null| null| null|
| y| B|一|null| null|一|B| null| null|
| z| D| C| B|一|一|B| C| D|
| u| null| null| null| null| null| null| null| null|