我在表中有这样的字符串:
我想做的是只得到中间部分,例如:
基本上是“-”字符前后的子字符串
我尝试过这个(来自这里的示例):
SELECT SUBSTRING(Product.Name, LEN(LEFT(Product.[Name], CHARINDEX ('-', Product.[Name]))) + 1, LEN(Product.[Name]) - LEN(LEFT(Product.[Name], CHARINDEX ('-', Product.[Name]))) - LEN(RIGHT(Product.[Name], LEN(Producto.[Name]) - CHARINDEX ('-', Product.[Name]))) - 1)
FROM Product
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误:
[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]Invalid length parameter passed to the LEFT or SUBSTRING function. (537)
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道如何解决该错误,因为我不明白示例中的解决方案。我能做些什么?
谢谢。
一种选择是 ParseName()
例子
Declare @S varchar(max)='AM-65-800'
Select parsename(replace(@S,'-','.'),2)
Run Code Online (Sandbox Code Playgroud)
退货
65
Run Code Online (Sandbox Code Playgroud)