2013-02-05 50 views
-4

價值如何從A列中得到查詢的SQL代碼和子這樣的代碼跟如何從字符串

格式:

[very long name | code | subcode] 

的例子

[Pear | S01 | 10] 
[Pineapple | S01 | 9] 

PS:沒有方括號,但管道分隔符是真實的

+2

是'[梨| S01 | 10]「字面意思是一個領域,你需要解析它嗎? – LittleBobbyTables

+0

是的它在一個領域,我需要解析它 –

+0

@YanSusanto:該行實際上是否包含方括號和管道分隔符,或者你只是添加他們的插圖? –

回答

3

試試這個; DEMO - UPDATED WITH A TABLE

--declare @s varchar(50)='[Pineapple | S01 | 9]' 

select substring(yourColumn,ind1 + 1,ind2-(ind1 +1)) code, 
     substring(yourColumn,ind2 + 1,len(yourColumn)-(ind2 + 1)) subcode 
FROM ( 
    SELECT yourColumn, charindex('|',yourColumn,1) ind1, 
     charindex('|',yourColumn,charindex('|',yourColumn,1)+1) ind2 
    FROM yourTable 
) X 
1

假設你的代碼總是三個字母,你可以使用一些內置的功能來幫助你:

WITH Data(Sample) AS 
(
    SELECT 'Pear | S01 | 10' UNION 
    SELECT 'Pineapple | S01 | 9' 
) 
SELECT 
    SUBSTRING([Sample], CHARINDEX(' | ', [Sample], 1) + 3, 3) AS Code, 
    REVERSE(SUBSTRING(REVERSE([Sample]), 1, 
     CHARINDEX(' | ', REVERSE([Sample]), 1) - 1)) AS SubCode 
FROM 
    data