字符后的字符串

时间:2016-05-05 23:43:49

标签: sql teradata

你好我有一个字符串值看起来像test ( test):5的列,我想删除包含此字符的:之后的所有内容。

我有以下sql并不断收到此错误:

  

[Teradata数据库] [TeraJDBC 14.10.00.26] [错误3706] [SQLState 42000]语法错误:期待&#39;(&#39;和字符串&#39;:&#39;。< / p>

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

有人可以帮忙吗?

感谢

3 个答案:

答案 0 :(得分:2)

Teradata在15.10之前不支持n(n-1)/2字符串函数,但这不能是否定的。 LEFT是SQL Server专有语法,CHAR_INDEX是标准SQL / Teradata:

POSITION

如果没有-- 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))) ,您想要返回什么?

SUBSTRING将返回一个空字符串,如果您希望更好地使用完整字符串:

':'

答案 1 :(得分:0)

我认为这是对的...至少在sql server中......不确定teradata。

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

答案 2 :(得分:0)

我相信这对你在Teradata上有用:

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