0

我更改单词字母(5 和 6 个字母更改)和一些字母掩蔽。但我接受错误更改信,我不做掩蔽。

我的查询:

SELECT
    NAME,
    CONCAT(SUBSTRING(NAME, 1, 4),
           SUBSTRING (NAME, 6, 1),
           SUBSTRING(NAME, 5, 1),
           SUBSTRING(NAME, 7, LEN(NAME) -5))
FROM
    INFORMATION

这个错误是

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

我能怎么做?(SQL Server 2014。)

4

1 回答 1

0

您遇到的问题是您将 -5 传递给小于 5 的“NAME”列的长度,并且该函数SUBSTRING不能接受负值。但是,如果您想避免始终添加ABS到表达式中,则需要验证它是否返回了您期望的内容:

SELECT
    NAME,
    CONCAT(SUBSTRING(NAME, 1, 4),
           SUBSTRING(NAME, 6, 1),
           SUBSTRING(NAME, 5, 1),
           SUBSTRING(NAME, 7, ABS(LEN(NAME) -5)))
FROM
    INFORMATION
于 2018-08-05T08:25:04.157 回答