我正在尝试从列的值获取子字符串,并且遇到以下错误Argument data type varchar is invalid for argument 2 of substring function.
列类型为NvarChar(50),它是应用程序的系统列,因此无法对其进行修改。
理想情况下,我只需要选择子字符串作为查询的一部分,而无需更改表或创建视图或其他表。
这是我的查询
SELECT SUBSTRING(INVOICE__, ':', 1)
FROM dwsystem.dbo.DWGroup
我正在尝试仅选择特定字符之后的字符串中的所有内容。在这种情况下,:
字符。
答案 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