2016-05-05 13 views
0

Hallo, ich habe eine Spalte mit einem String-Wert, der wie test (test):5 aussieht, und ich möchte alles nach : einschließlich dieses Zeichen entfernen.Streifen Zeichenfolge nach Zeichen

Ich habe die unten SQL und halten diesen Fehler:

[Teradata Database] [TeraJDBC 14.10.00.26] [Error 3706] [SQLState 42000] Syntax error: expected something between '(' and the string ':'.

select blah, LEFT(blah, CHARINDEX(':', blah) - 1) AS newblah from blah_table 

kann jemand bitte helfen?

dank

Antwort

0

Ich denke, das ... zumindest in SQL Server richtig ist ... über teradata nicht sicher.

SELECT SUBSTRING(blah, 0, LEN(blah) - CHARINDEX (':', blah)) 
0

Ich glaube, das auf Teradata für Sie arbeiten:

SELECT SUBSTRING(blah FROM 1 FOR (POSITION(';' in blah) - 1)); 
2

Teradata nicht die LEFT String-Funktion vor 15.10 nicht unterstützt, aber das muss nicht negativ sein. CHAR_INDEX ist SQL Server proprietäre Syntax ist POSITION Standard-SQL/Teradata:

-- will fail if there's no ':' because FOR must be >= 0 
SUBSTRING(blah FROM 1 FOR (POSITION('0' in blah) - 1)) 

-- will work because FROM might be negative, too 
SUBSTRING(blah FROM 0 FOR (POSITION('0' in blah))) 

Was möchten Sie zurückkommen, wenn es keine ':' ist?

Die SUBSTRING einen leeren String zurück, wenn Sie die vollständige Zeichenfolge stattdessen besser zu nutzen möchten:

-- tokenize the string and return the 1st token 
STRTOK(blah, ':', 1) 
+0

Gute Punkte auf Token fehlt. –

Verwandte Themen