SQL 错误:传递给 LEFT 或 SUBSTRING 函数的长度参数无效,如何解决?
要修改这个 SQL 查询语句,你需要解决以下问题:
- SELECT 子句中的 SUBSTRING 函数参数无效。
- ORDER BY 子句中的 ROW_NUMBER 函数参数无效。
首先,你需要检查 SUBSTRING 函数的参数。SUBSTRING 函数的第三个参数应该是子字符串的长度,而不是第二个分隔符的位置。你需要将 SUBSTRING 函数的第三个参数更改为正确的长度。
同时,你还需要检查 ORDER BY 子句中 ROW_NUMBER 函数的参数。ROW_NUMBER 函数需要一个有效的排序列,而不是 (SELECT 1)。你需要指定一个合适的排序列。
修正后的 SQL 查询语句如下:
SELECT * FROM
(
SELECT DISTINCT c.*
FROM
(
SELECT
'[DATE]',
'CPGSD_1',
'CPHM_1',
'CPYS_1',
'NL_1',
'XB_1',
'XM_1',
SUBSTRING('ZJHM_1', 1, CHARINDEX('-', 'ZJHM_1') - 1) AS c16,
SUBSTRING('ZJHM_1', CHARINDEX('-', 'ZJHM_1', 0) + 1, CHARINDEX('-', 'ZJHM_1', 0 + 1) - CHARINDEX('-', 'ZJHM_1', 0) - 1) AS c17,
'ZJHM_1' AS 'ZJHM_1'
FROM
(
SELECT
'[DATE]' AS '[DATE]',
'CPGSD' AS 'CPGSD_1',
'CPHM' AS 'CPHM_1',
'CPYS' AS 'CPYS_1',
'NL' AS 'NL_1',
'XB' AS 'XB_1',
'XM' AS 'XM_1',
'ZJHM' AS 'ZJHM_1'
FROM
(
SELECT
'[DATE]',
'CPGSD',
'CPHM',
'CPYS',
'NL',
'XB',
'XM',
'ZJHM'
FROM
'dbo'.'SQLSERVER_CAR'
) tempt
) tempt
) c
) VISUAL_TABLE_ORDER_BY
ORDER BY ROW_NUMBER() OVER(ORDER BY [DATE])
OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;
注意:
- 以上代码中,
[DATE]应该替换为实际的日期列名。 'ZJHM_1'应该替换为实际的身份证号列名。- 确保你了解 SUBSTRING 函数和 ROW_NUMBER 函数的使用方法,并根据你的实际需求进行调整。
原文地址: https://www.cveoy.top/t/topic/o0DY 著作权归作者所有。请勿转载和采集!