2017-10-14 5 views
0

eine Spalte in einer Tabelle wie ein Standard-Text enthält folgt:T-SQL: Extract Abschnitt einer Zeichenfolge

Variable Length Text (12345) follows more variable length text again. 

Ihr Ziel ist es, dass die 12345 auszuwählen, oder tatsächlich die Zahl zwischen() als auch die Zahl ist kann unterschiedlich lang sein. Irgendwelche Empfehlung, bitte?

SELECT SUBSTRING(TcSubjectTx_N, CHARINDEX('(', TcSubjectTx_N)+1, CHARINDEX(')', TcSubjectTx_N)-CHARINDEX('(', TcSubjectTx_N)-1) 
FROM T_TcTicket 
WHERE TcTicketID=78945 

Antwort

1

Verwenden SUBSTRING() Funktion und CHARINDEX() Funktion wie folgt:

SELECT SUBSTRING(<Column>, CHARINDEX('(', <Column>)+1, CHARINDEX(')', <Column>)-CHARINDEX('(', <Column>)-1); 

Ausgang:

12345 

Hinweis: Dies gibt Ihnen alle Zeichenfolge/Zahlen zwischen ( und )

+0

Tnx, aber das wirft einen Fehler 'ungültige Längenparameter nach links oder SUBSTRING function' – DeepDiver

+0

tnx bestanden wieder das ist genau das, was ich tat, Versuch Abfrage hinzugefügt zu meiner ursprünglichen Frage. – DeepDiver

+1

@DeepDiver Ich denke, Ihre Spalte enthält nicht die Daten mit(). –

0

Hier ist eine Methode:

select t.*, v2.exp 
from t cross apply 
    (values (stuff(t.col, 1, charindex('(', t.col + '('), '')) 
    ) v1(exp) cross apply 
    (values (left(v1.exp, charindex(')', v1.exp + ')') - 1)) 
    ) v2(exp); 

Hinweis: Dies wird alles zwischen der ersten Öffnung paren und Schließen paren.

Here ist ein Rextester.

0

Versuchen Sie folgendes:

DECLARE 
@STRING VARCHAR(MAX)= 
'Variable Length Text (12345) follows more variable length text again.' 

SELECT SUBSTRING(@STRING, 
      CHARINDEX('(',@STRING)+1, 
      (CHARINDEX(')',@STRING)-1)-CHARINDEX('(',@STRING) 
       ) 
Verwandte Themen