如何将凌乱的双字母代码转换为MS SQL中的一个“双字母”列TSQL?

时间:2013-11-14 10:50:03

标签: sql-server tsql

我需要移调(我希望单词transpose是正确的)一串字母写成一列中的两个字母

我的数据如下:它基本上是一个两个字母的代码混合在一起,非常凌乱

ColumnID
HG34
HG/WK
HG\34
54/OF
AS\MM
AC54
AC54MM

以及我希望将上述内容转换为以下内容:

ColumnID
HG
34
WK
54
OF
AS
MM
AC

是否有可以执行此操作的查询?

我不介意结果是否重复,因为我可以随时清理它

谢谢

2 个答案:

答案 0 :(得分:4)

select substring(ColumnID, 1, 2) from your_table
union
select substring(replace(replace(ColumnID,'\\',''),'/',''), 3, 2) from your_table
union
select substring(replace(replace(ColumnID,'\\',''),'/',''), 5, 2) from your_table
where length(replace(replace(ColumnID,'\\',''),'/','')) = 6

SQLFiddle demo

答案 1 :(得分:1)

select distinct substring(col, x*2-1, 2)
from your_table
cross apply (select replace(replace(ColumnID,'\',''),'/',''))c(col)
inner join (values(1),(2),(3))x(x) on len (col) >= x * 2 -- as much pairs as needed