TSQL-Case语句+连接2列+从右侧选择10个字符
我试图在case语句中连接两个字段,其中第二个字段只需要右边的10个字符。第一个字段是25个字符的varchar字段twfcompID;第二个字段是文本字段t.TransNotes。我想以类似497-2059-281369.pdf的内容结束。这是我不起作用的语法TSQL-Case语句+连接2列+从右侧选择10个字符,tsql,sql-server-2005,concatenation,case,Tsql,Sql Server 2005,Concatenation,Case,我试图在case语句中连接两个字段,其中第二个字段只需要右边的10个字符。第一个字段是25个字符的varchar字段twfcompID;第二个字段是文本字段t.TransNotes。我想以类似497-2059-281369.pdf的内容结束。这是我不起作用的语法 (Case WHEN l.TWFCompID = 'FCLMIL' THEN CAST(m.MatterID AS VARCHAR(100)) + '--' + RIGHT(CAST(t
(Case
WHEN l.TWFCompID = 'FCLMIL' THEN
CAST(m.MatterID AS VARCHAR(100)) + '--' +
RIGHT(CAST(t.TransNotes,10) AS VARCHAR(100))
WHEN l.TWFCompID like 'f-%' THEN
CAST(m.MatterID AS VARCHAR(100)) + '--' + (right(t.TransNotes,10) AS VARCHAR(100))
WHEN l.TWFCompID like 'FS-%' THEN
CAST(m.MatterID AS VARCHAR(100)) + '--' + CAST(right(t.TransNotes,10) AS VARCHAR(100))
ELSE '' END) AS 'LineItemID',
当我运行此操作时,我会得到以下错误:
味精1035,第15级,第10状态,第5行
“CAST”附近的语法不正确,应为“AS”。问题似乎与第一个WHEN子句有关。右侧和铸造的参数混淆。试试这个
WHEN l.TWFCompID = 'FCLMIL' THEN
CAST(m.MatterID AS VARCHAR(100)) + '--' +
CAST(RIGHT(t.TransNotes, 10) AS VARCHAR(100))
另一种方法是使用下面的语句,它将转换CAST和RIGHT语句
WHEN l.TWFCompID = 'FCLMIL' THEN
CAST(m.MatterID AS VARCHAR(100)) + '--' +
RIGHT(CAST(t.TransNotes AS VARCHAR(100)), 10)
您可能还缺少第二个WHEN子句中的CAST关键字。我先是这样做的,但在这种情况下,我得到了错误:Msg 8116,级别16,状态1,第1行参数数据类型text对于right函数的参数1无效。然而,关于第二组演员,你是对的。我已经重写了100遍。transNotes字段就是那个无限文本字段。谢谢:还在挣扎。看起来无法在文本字段中使用正确的关键字。您可以使用什么函数仅获取字段中任何内容的最后10个字符?当我使用您建议的语法时,对于右函数的参数1,我得到>Msg 8116,级别16,状态1,第1行参数数据类型text is invalid>。我编辑了我的答案以包含一个替代选项。它切换右函数和强制转换函数的位置,以便先更改数据类型,然后应用正确的函数。谢谢!成功了。我也从一个朋友那里得到了这个,它也能工作:+CAST RIGHTCASTt.TransNotes作为VARCHARmax,11作为varchar25