2016-05-05 9 views
0

こんにちは私はtest (test):5のような文字列の値を持つ列を持っています。この文字を含む:の後にすべてを取り除きたいと思います。文字の後の文字列

私は、以下のSQLを持っていると、このエラーを取得しておいてください。

[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 

誰かが助けてくださいすることができますか?

おかげ

答えて

0

私はTeradataのわから...少なくともSQL Serverで...これが正しいとは思いません。

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

私は、これはTeradataの上のあなたのために働くだろうと信じて:

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

のTeradataは15.10前LEFT文字列関数をサポートしていませんが、これは負であってはなりません。 CHAR_INDEXは、POSITIONある標準SQL /のTeradata SQL Serverの独自の構文は次のとおりです。

-- 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))) 

あなたは何':'がいない場合に返すようにしたいですか?トークンが欠落上

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

グッドポイント:あなたの代わりに、より良い使用を完全な文字列をしたい場合は

SUBSTRINGは、空の文字列を返します。 –

関連する問題