我有一个非常长且复杂的字符串,它带有新的换行符 - 我有一个困难的时间解析。我需要能够为每个下面的字段创建一个具有列的选择查询。SQL解析出多个子字符串
理想会找到new line break
- 每一行 - 回到:
之前的所有结肠应:
和new ling break
之间的列名,一切都应该在字段中的数据。
所有的数据都是以字符串形式返回的,所以我只是为下面的每一行建立一个select语句。我不确定这是否可能。
第二种替代方案,硬编码并说出类似于CHARINDEX ('Home Phone:' ,notes, 0)
的地方我在哪里找到家庭电话字符串,然后在指定字符串之后将:
和new ling break
之间的所有内容取出。
在这种情况下,我的查询会说每个选择项目 - 找到字符串“家庭电话”和拉冒号后会发生什么,或者找到字符串“学校名称”等
这是该数据看起来像(在一个所有的字符串名为notes
):
Home Phone: 1234567890
Cell Phone: 1234567890
Date of Birth: 01/01/1971
School Name: James Jones High School
Address:123 Main Street
School City: Queens
School State: PA
School Zip: 32112
Years Teaching: 12
Grade Levels: Middle School
Total Students: 120
Subject: Music:
How did they hear: Other, provide more info: Former partner teacher in the Middle School
Type: Public/Charter
Question 1: aaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaa aaaaaaa aaaa aaa aaaaaaaa aaaaaa aaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaa aaaaaaa aaaaaaaa aaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaaaa aaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaa aaaaaaaa aaaaaaaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaa aaaaa aaaaaa aaaaaa aaaaaaaaaaaa aaaaaaaaaaaa aaa aaaa aaaaa aaaaaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaa.
Question 2: bbb bbbbbbbbbb bbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbb bbbbbbbbbbbb bbbbbbb bbb bbbbbbbbbb bbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbb bbb bbbbbbbbb bbbbbbb bbbbbb bbbbbb bbbbbbb bbb bbbbbbbbbb bbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbb bbbbbbbbbbbb bbbbbbb bbbbbbbbbbbb bbbbbbb bbbbbbbbbb bbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbb bbbbbbbbbbbb bbbbbbbbbbbb bbbbbbb bbb bbbbbbbbbb bbbbbbbbbbbbbbbbb bbbbbbbbbbbbbb
Question 3: ccccccccccccccccccccccc cccccccc ccccccccccc cccccccccccccccccccccc ccc ccccccccc cccccccccccccc ccccccccccccccccccccc cccccccccccccccccccccc cccccccccccccccccc ccccccccccc ccccccccccccc ccccccccccccccccc cccccccc
因此输出看起来是这样的(所有的长期问题,在各个领域回答为好)。
Home Phone Cell Phone Date of Birth: … Type: Question 1 : Question 2: Question 3:
1234567890 1234567890 1/1/1971 Public/Charter aaaaaaaa aaaaaaaaaaaaa. bbb bbbbbbbbbb ccccccccccccccccccccccc
我不确定这是否合理 - 但任何和所有建议都非常感谢。
拉动子字符串和新行char的代码 - 但是这是硬编码的。我无法弄清楚如何动态地做到这一点。
SELECT ltrim(rtrim(CHARINDEX ('Home Phone:' ,notes, 0) + LEN('Home Phone: '))) as 'beggining',
ltrim(rtrim(CHARINDEX (CHAR(10) ,notes, 0))) as 'ending',
SUBSTRING(notes,(CHARINDEX ('Home Phone:' ,notes, 0) + LEN('Home Phone: ')),(LEN('Home Phone: '))) as 'home phone',
FROM table a
谢谢!
是你不知道如何在SQL字符串识别换行符的问题? –
我不知道该怎么做。 – Elizabeth
[查找SQL表中的文本字符串中的换行符?](http://stackoverflow.com/questions/13075079/finding-a-line-break-in-a-text-string-in- a-sql-table) –