如何根据长度拆分列
How to split columns on basis of length
我有一个 table 的 10 列,如果列的值的长度为四,我想将一列拆分为两列,否则不拆分,对于其余值,它应该进入第一个拆分列。
column Acolumn Bcolumn C
0000 00 00
1111
1 1
000 000
0115 01 15
你可以试试下面的-
select columnA,
case when len(columnA)=4 then left(columnA,2) end as columnB,
case when len(columnA)=4 then mid(ColumnA,3,2) end as columnC
from tablename
您想在 MS Access 中有条件地执行某些操作。这通常意味着 IIF()
或 SWITCH()
,因为 MS Access 不支持标准的 CASE
表达式语法:
select t.column,
iif(len(column) = 4, left(column, 2), column) as columnA,
iif(len(column) = 4, right(column, 2), NULL) as columnB
from t;
虽然我不推荐,但是你也可以用union all
:
select t.column, t.column as columnA, NULL as columnB
from t
where len(column) <> 4
union all
select t.column, left(t.column, 2) as columnA, right(t.column, 2) as columnB
from t
where len(column) = 4;
我有一个 table 的 10 列,如果列的值的长度为四,我想将一列拆分为两列,否则不拆分,对于其余值,它应该进入第一个拆分列。
column Acolumn Bcolumn C
0000 00 00
1111
1 1
000 000
0115 01 15
你可以试试下面的-
select columnA,
case when len(columnA)=4 then left(columnA,2) end as columnB,
case when len(columnA)=4 then mid(ColumnA,3,2) end as columnC
from tablename
您想在 MS Access 中有条件地执行某些操作。这通常意味着 IIF()
或 SWITCH()
,因为 MS Access 不支持标准的 CASE
表达式语法:
select t.column,
iif(len(column) = 4, left(column, 2), column) as columnA,
iif(len(column) = 4, right(column, 2), NULL) as columnB
from t;
虽然我不推荐,但是你也可以用union all
:
select t.column, t.column as columnA, NULL as columnB
from t
where len(column) <> 4
union all
select t.column, left(t.column, 2) as columnA, right(t.column, 2) as columnB
from t
where len(column) = 4;