重新传递给RIGHT函数的长度参数无效

时间:2016-06-30 21:07:01

标签: sql string tsql string-length maxlength

我遇到了这个错误而无法进展。

对此错误有任何想法吗?

CASE WHEN mm.[Moodle Courses Category] + '_' +ISNULL(RIGHT(ttg.TTGP_Group_Code, LEN(ttg.TTGP_Group_Code)-11),'V1') like '%/%' THEN
        mm.[Moodle Courses Category] + '_' +ISNULL(RIGHT(ttg.TTGP_Group_Code, LEN(ttg.TTGP_Group_Code)-11),'V1')
      ELSE
        mm.[Moodle Courses Category] + '_' +ISNULL(RIGHT(ttg.TTGP_Group_Code, LEN(ttg.TTGP_Group_Code)-11),'V1') END AS GROUP_ID

错误:消息536,级别16,状态2,行1 传递给RIGHT函数的长度参数无效。

1 个答案:

答案 0 :(得分:0)

你有:

RIGHT(ttg.TTGP_Group_Code, LEN(ttg.TTGP_Group_Code)-11)

错误表示对于字段" ttg.TTGP_Group_Code"至少有一条记录,其中ttg.TTGP_Group_Code的长度小于11个字符。你不能采取负数的权利。因此,如果字段的长度为10并且您减去11,则得到-1。

因此,您需要为ttg.TTGP_Group_Code的长度小于11的地址设置条件,例如:

CASE

    WHEN LEN(ttg.TTGP_Group_Code) <= 11 AND mm.[Moodle Courses Category] + '_' + ISNULL(tg.TTGP_Group_Cod,'V1') like '%/%' THEN
            THEN mm.[Moodle Courses Category] + '_' + ISNULL(tg.TTGP_Group_Cod,'V1')


    WHEN mm.[Moodle Courses Category] + '_' +ISNULL(RIGHT(ttg.TTGP_Group_Code, LEN(ttg.TTGP_Group_Code)-11),'V1') like '%/%' THEN
        mm.[Moodle Courses Category] + '_' +ISNULL(RIGHT(ttg.TTGP_Group_Code, LEN(ttg.TTGP_Group_Code)-11),'V1')
    ELSE
        mm.[Moodle Courses Category] + '_' +ISNULL(RIGHT(ttg.TTGP_Group_Code, LEN(ttg.TTGP_Group_Code)-11),'V1') 
END AS GROUP_ID