简体   繁体   中英

In SQL, how to substring between 2 special characters?

I am working on SQL Server 2012, I would like to take a substring between the 2nd and 3rd comma in the below string.

Input:

IP-TEXT

1CAT, 2DOG, 5.5, AAA, BE TTY
TR2, 5lo, 9.1, LOL, ROFL
PP09, 4432, 6, USA, UK

Required output:

OP-TEXT

5.5
9.1
6

Can anyone please help with a SQL query?

You can use CHARINDEX :

SELECT SUBSTRING(IP_TEXT, t2.p+1, t3.p - t2.p - 1) AS OP_TEXT
FROM mytable 
CROSS APPLY (SELECT CHARINDEX(',', IP_TEXT)) AS t1(p)
CROSS APPLY (SELECT CHARINDEX(',', IP_TEXT, t1.p+1)) AS t2(p)
CROSS APPLY (SELECT CHARINDEX(',', IP_TEXT, t2.p+1)) AS t3(p)

CROSS APPLY function works. I also found another method to fetch the value between 2,d and 3rd comma. Below is the query -

substring(IP-TEXT, 
          CHARINDEX(',',IP-TEXT,
          (CHARINDEX(',', IP-TEXT) + 1)) + 1, 
           CHARINDEX(',',IP-TEXT,
          (CHARINDEX(',',IP-TEXT,
          (CHARINDEX(',',IP-TEXT)+1))+1))-    
           CHARINDEX(',',IP-TEXT,
          (CHARINDEX(',',IP-TEXT)+1)))

Appreciate your help folks :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM