【发布时间】:2018-03-11 13:48:52
【问题描述】:
如果我有一个字符串,例如:
one\two\three\four\five\six\
two\three\four\five\six\one\
three\four\five\six\one\two\
four
five\six
我如何修剪它,所以我只剩下
one
two
three
four
five
我试过了
LEFT(column_name_goes_here, CHARINDEX('\', column_name_goes_here) - 1)
根据SQL Server replace, remove all after certain character的回答
但它给了我以下错误信息:
Msg 537, Level 16, State 3, Procedure stored_procedure_one, Line 107
Invalid length parameter passed to the LEFT or SUBSTRING function.
【问题讨论】:
-
您的 CHARINDEX 正在寻找正斜杠,而您的数据有反斜杠。
-
CHARINDEX('\', column_name_goes_here) - 1)
-
@SeanLange,抱歉,这是一个错字,在实际脚本中,它是一个反斜杠。我已经更正了问题中的文字。
-
@ChetanVasudevan,对不起,这是一个错字,在实际脚本中,它是一个反斜杠。我已经更正了问题中的文字。
-
@SeanLange 是正确的。使用您的示例,您的代码可以正常工作。 然而,如果你有一个没有反斜杠的字符串,它会返回这个错误。它将返回 0 的
CHARINDEX,当您减去1时,您将-1传递给您的LEFT函数。
标签: sql sql-server tsql sql-server-2012