传递给LEFT或SUBSTRING函数的长度参数无效

bri*_*ans 11 t-sql

我有以下描述:'样品产品制造商产品名称XYZ - 尺寸',我想从此获得值'产品名称XYZ'.如果这只是一行我只是使用SUBSTRING没有问题,但我有成千上万的记录,虽然初始值Sample Product Maker对于所有产品都是相同的,但产品名称可能不同,我不想要任何东西.连字符.

到目前为止,我已经在这个问题的标题中产生了错误.

SELECT i.Itemid,
       RTRIM(LTRIM(SUBSTRING(i.ShortDescription, 25, (SUBSTRING(i.ShortDescription, 25, CHARINDEX('-', i.ShortDescription, 25)))))) AS ProductDescriptionAbbrev,
       CHARINDEX('-', i.ShortDescription, 0) - 25  as charindexpos
FROM t_items i
Run Code Online (Sandbox Code Playgroud)

我得到'参数数据类型varchar对于子字符串函数的参数3无效'

正如您所看到的,我正在获取sql语句最后一行的值,但是当我尝试将其插入SUBSTRING函数时,我遇到了各种问题.

Dat*_*eur 20

有可能你有' - '缺失的行,这会导致你的错误.试试这个...

SELECT i.Itemid,
    SUBSTRING(i.ShortDescription, 22, CHARINDEX('-', i.ShortDescription+'-', 22)) AS ProductDescriptionAbbrev,
FROM t_items i
Run Code Online (Sandbox Code Playgroud)