ฉันมีตาราง SQL ที่มีสองคอลัมน์ต่อไปนี้:
FORMAT Sample
GT:AD:DP:GQ:PL 0/0:233,0:233:99:0,120,1800
GT:AD:DP:GQ:PL 0/1:101,61:220:99:835,0,1859
GT:AD:DP:GQ:PL 0/0:172,0:172:99:0,120,1800
GT:AD:DP:GQ:PL 0/0:216,0:216:99:0,120,1800
GT:AD:DP:GQ:PL 0/0:216,0:216:99:0,120,1800
GT:AD:DP:GQ:PGT:PID:PL 0/1:185,232:417:99:0|1:8029494_T_G:8670,0,6429
GT:AD:DP:GQ:PL 0/0:367,0:367:99:0,120,1800
GT:AD:DP:GQ:PGT:PID:PL 0/1:150,198:348:99:0|1:8029494_T_G:7930,0,5677
GT:AD:DP:GQ:PGT:PID:PL 0/1:148,196:344:99:0|1:8029494_T_G:7876,0,5652
GT:AD:DP:GQ:PGT:PID:PL 0/0:148,0:344:99:0|1:8029494_T_G:7876,8334,14591
GT:AD:DP:GQ:PGT:PID:PL 0/0:148,0:344:99:0|1:8029494_T_G:7876,8334,14591
คอลัมน์ FORMAT ระบุ ID สำหรับฟิลด์ที่กำหนดในคอลัมน์ต่อไปนี้โดยแยกด้วย ///
ฉันต้องการแยกฟิลด์เฉพาะจากคอลัมน์ที่สองตาม ID/ตำแหน่งจากคอลัมน์ FORMAT เช่น AD (ที่ 2), DP (ที่ 3) หรือ GQ (ที่ 4)
ฉันสามารถแยกฟิลด์ AD ด้วยรหัสต่อไปนี้:
SELECT SUBSTRING(Sample, CHARINDEX(':',Sample)+1, CHARINDEX(':',Sample,5)-5) FROM Table 1;
ปัญหาคือฉันไม่สามารถแยกฟิลด์ DP หรือ GQ ได้ เนื่องจากความยาวของฟิลด์ที่แตกต่างกันนั้นไม่เท่ากันเสมอไป และฉันไม่สามารถระบุได้ว่าตำแหน่งใดควรเป็นตำแหน่งเริ่มต้นในการค้นหาตำแหน่ง /// ต่อไปนี้
ฉันพยายามใช้ฟังก์ชัน Split จากเว็บไซต์นี้ด้วย:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648
ปัญหาคือฉันไม่รู้วิธีประกาศคอลัมน์เป็นตัวแปรเพื่อที่จะสามารถแยกฟิลด์ที่จำเป็นสำหรับทุกแถวของตารางได้
ผลลัพธ์ที่ต้องการสำหรับคอลัมน์ [ตัวอย่าง] ควรมีลักษณะดังนี้:
GT AD DP GQ
0/0 233,0 233 99
0/1 101,61 220 99
0/0 172,0 172 99
0/0 216,0 216 99
0/0 216,0 216 99
0/1 185,232 417 99
0/0 367,0 367 99
0/1 150,198 348 99
0/1 148,196 344 99
0/0 148,0 344 99
0/0 148,0 344 99
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม
ขอบคุณ,
charindex()
ไม่ใช่ฟังก์ชัน MySQL ฉันเดาว่าคุณกำลังใช้ SQL Server - person Gordon Linoff   schedule 04.01.2018