将字符串分隔为特定的临时表列

时间:2015-06-15 13:42:13

标签: sql

我正在使用RIGHT(LEFT())剥离字符串的方法,因为每个字符都需要放入其自己的持有者中,以便我可以访问它并将其用于报告(每个字符都需要在其自己的框中某种原因)。

通常有16个字符,但是为了节省空间和保存重复,我已经缩减了代码。

我想要做的是将分隔的字符值放入临时表的相应列中 - 如何最好地实现?

我使用此数据时没有其他用途我会销毁它。

代码

CREATE table #StringSeparate
(
col1 varchar(1),
col2 varchar(1),
col3 varchar(1),
col4 varchar(1),
col5 varchar(1),
col6 varchar(1),
col7 varchar(1),
col8 varchar(1),
)

declare @string varchar(16)
set @string = 'tpg22052015-1204'

SELECT
LEFT(@string,1),
RIGHT(LEFT(@string,2),1),
RIGHT(LEFT(@string,3),1),
RIGHT(LEFT(@string,4),1),
RIGHT(LEFT(@string,5),1),
RIGHT(LEFT(@string,6),1),
RIGHT(LEFT(@string,7),1),
RIGHT(LEFT(@string,8),1)
INTO
#String Separate

3 个答案:

答案 0 :(得分:1)

就像这样:

CREATE table #StringSeparate
(
col1 varchar(1),
col2 varchar(1),
col3 varchar(1),
col4 varchar(1),
col5 varchar(1),
col6 varchar(1),
col7 varchar(1),
col8 varchar(1),
)
INSERT INTO #StringSeparate
SELECT
LEFT(@string,1),
RIGHT(LEFT(@string,2),1),
RIGHT(LEFT(@string,3),1),
RIGHT(LEFT(@string,4),1),
RIGHT(LEFT(@string,5),1),
RIGHT(LEFT(@string,6),1),
RIGHT(LEFT(@string,7),1),
RIGHT(LEFT(@string,8),1)

或者不要创建临时表并执行此操作:

SELECT
LEFT(@string,1) col1,
RIGHT(LEFT(@string,2),1) col2,
RIGHT(LEFT(@string,3),1) col3,
RIGHT(LEFT(@string,4),1) col4,
RIGHT(LEFT(@string,5),1) col5,
RIGHT(LEFT(@string,6),1) col6,
RIGHT(LEFT(@string,7),1) col7,
RIGHT(LEFT(@string,8),1) col8
INTO
#StringSeparate

它会自动创建临时表,因为INTO会创建表。

答案 1 :(得分:1)

根据你的不同,RDBMS我想我可能更喜欢SUBSTRING:

INSERT INTO #StringSeparate
SELECT
LEFT(@string,1),
SUBSTRING(@string,2,1),
SUBSTRING(@string,3,1),
... 
RIGHT(@string,1)

答案 2 :(得分:1)

我对你的陈述进行了大量插入。

INSERT INTO #StringSeparate
VALUES
((LEFT(@string,1)),
(RIGHT(LEFT(@string,2),1)),
(RIGHT(LEFT(@string,3),1)),
(RIGHT(LEFT(@string,4),1)),
(RIGHT(LEFT(@string,5),1)),
(RIGHT(LEFT(@string,6),1)),
(RIGHT(LEFT(@string,7),1)),
(RIGHT(LEFT(@string,8),1)))