我正在使用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
答案 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)))