Sql 字符后带字符串

Sql 字符后带字符串,sql,teradata,Sql,Teradata,您好,我有一个列,它的字符串值看起来像test(test):5,我想去掉:后面的所有内容,包括这个字符 我有以下sql,并不断收到此错误: [Teradata数据库][TeraJDBC 14.10.00.26][Error 3706][SQLState 42000]语法错误:应在“(”和字符串“:”之间 有人能帮忙吗 谢谢我认为这是正确的……至少在sql server中是这样……对teradata不太确定 SELECT SUBSTRING(blah, 0, LEN(blah) - CHARIN

您好,我有一个列,它的字符串值看起来像
test(test):5
,我想去掉
后面的所有内容,包括这个字符

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

[Teradata数据库][TeraJDBC 14.10.00.26][Error 3706][SQLState 42000]语法错误:应在“(”和字符串“:”之间

有人能帮忙吗


谢谢

我认为这是正确的……至少在sql server中是这样……对teradata不太确定

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

我认为这是正确的…至少在sql server中是这样…对teradata不太确定

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

我相信这将在Teradata上对您起作用:

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

我相信这将在Teradata上对您起作用:

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

Teradata不支持15.10之前的
LEFT
string函数,但这不能是负值。
CHAR\u INDEX
是SQL Server专有语法,
POSITION
是标准SQL/Teradata:

SELECT SUBSTRING(blah FROM 1 FOR (POSITION(';' in blah) - 1));
-- 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)

Teradata不支持15.10之前的
LEFT
string函数,但这不能是负值。
CHAR\u INDEX
是SQL Server专有语法,
POSITION
是标准SQL/Teradata:

SELECT SUBSTRING(blah FROM 1 FOR (POSITION(';' in blah) - 1));
-- 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)