收到错误:参数数据类型varchar对于子字符串函数的参数2无效

时间:2019-04-01 20:39:40

标签: sql sql-server

我正在尝试从列的值获取子字符串,并且遇到以下错误Argument data type varchar is invalid for argument 2 of substring function.

列类型为NvarChar(50),它是应用程序的系统列,因此无法对其进行修改。

理想情况下,我只需要选择子字符串作为查询的一部分,而无需更改表或创建视图或其他表。

这是我的查询

SELECT SUBSTRING(INVOICE__, ':', 1)
  FROM dwsystem.dbo.DWGroup

我正在尝试仅选择特定字符之后的字符串中的所有内容。在这种情况下,:字符。

2 个答案:

答案 0 :(得分:1)

SUBSTRING参数是开始位置和结束位置,因此两个参数都将是如下所示的数字

 SELECT SUBSTRING(INVOICE__, 1, 1)
FROM dwsystem.dbo.DWGroup

您可以像使用mysql一样使用SUBSTRING_INDEX

SELECT SUBSTRING_INDEX(INVOICE__,':',-1);

示例

SELECT SUBSTRING_INDEX('mytestpage:info',':',-1); it will return   

info 

答案 1 :(得分:1)

使用charindex作为第一个参数的:

select substring(invoice__,charindex(':',invoice__)+1,len(invoice__))
  from dwsystem.dbo.dwgroup