在SQL

时间:2018-03-05 10:55:44

标签: sql sql-server format

我已经创建了一个表并且批量插入了一个文件,该文件现在都在'Column0'中。

文件格式如下:

#text1 "123123" 20180305 "text 123"
{
    #num2  xxxxxx 123.12 20180101
    #num3  yyyyyy 321.32 20180102
    #num3  zzzzzz 111.11 20180103
}
#text2 "332132" 20180203 "text 433"
{
    #num8  jjjjjj 222.22 20180104
    #num4  uuuuuu 11.23 20180204
}

...

等等。我想要做的是进行查询以将其格式化为

numNr    numAmount    numDate    textNr   
xxxxxx   123.12       20180101   123123    
yyyyyy   321.32       20180102   123123
zzzzzz   111.11       20180103   123123
jjjjjj   222.22       20180104   332132
uuuuuu   11.23        20180204   332132

换句话说,我希望将#text1中的数字绑定到它后面的{}之间的所有行,然后当我按下#text2之类的另一个文本编号时,我想将此文本编号绑定到此后的行数字等。有点难以解释,但希望你得到它,否则让我知道,我会尝试进一步解释。

怎么可以这样做?

更新: 我只是批量插入数据,因为它以这种方式格式化,所有内容都在column0中,即Column0 varchar(max)。

我无法从另一个线程中解决的问题是我不想循环遍历所有行,而在第一行我找到以#text1开头的行,我想要添加下一个数字它,在这种情况下“123123”到一个新表

textNumber    ID
123123        1

然后我希望{}内的所有数字具有相同的ID,例如另一个带

的表
numNumber    amount    date       ID
xxxxxx       123.12    20180101   1

然后计划加入这些以便我得到结果

numNumber    amount    date       ID    textNumber
xxxxxx       123.12    20180101   1     123123

因此,在编程语言中,我想循环遍历表的每一行并设置ID = 1,并在循环到达左侧(Column0,5)='#text'的行时将其添加到新列。之后,我希望将此ID添加到以左开头的所有后续行(Column0,8)='#num'。

在此之后,当我点击以左(Column0,5)='#text'开头的另一行时,我希望ID更新为ID = 2,然后这个新ID将被添加到以下行开始左(Column0,8)='#num'。

依此类推....但据我所知,循环部分在SQL中并不是很好......

这有意义吗?我怎么能以最简单的方式做到这一点?

0 个答案:

没有答案