你好我有一个字符串值看起来像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
有人可以帮忙吗?
感谢
答案 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));