You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL语法错误排查:HackerRank直角三角形打印问题

MySQL直角三角形打印SQL语法错误排查及修正

你的代码是SQL Server语法,但HackerRank使用的是MySQL,两者语法存在多处差异,导致报错,具体问题及修正如下:

核心语法差异及错误点

  • 变量与赋值:
    MySQL中会话变量用@var标识,赋值需用SET @var = 1;,而非Select @var=1;若用局部变量,需放在BEGIN...END块开头且无需@前缀。
  • 循环结构:
    MySQL的WHILE循环语法为WHILE 条件 DO ... END WHILE;,而非SQL Server的WHILE ... BEGIN ... END。
  • 字符串重复函数:
    MySQL中实现字符串重复的函数是REPEAT(str, count),不是SQL Server的REPLICATE()。
  • 输出语句:
    MySQL没有PRINT命令,需用SELECT语句输出内容。

修正后的代码方案

方案1:递归CTE(推荐,无需存储过程)

递归CTE是HackerRank场景下更简洁的写法,无需变量和循环:

WITH RECURSIVE triangle AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1 FROM triangle WHERE n < 5
)
SELECT REPEAT('* ', n) FROM triangle;

方案2:会话变量+WHILE循环

若偏好循环写法,可使用会话变量实现:

SET @var = 1;
WHILE @var < 6 DO
    SELECT REPEAT('* ', @var);
    SET @var = @var + 1;
END WHILE;

方案3:存储过程写法

如果环境要求必须用局部变量,可封装为存储过程:

DELIMITER //
CREATE PROCEDURE print_right_triangle()
BEGIN
    DECLARE var INT DEFAULT 1;
    WHILE var < 6 DO
        SELECT REPEAT('* ', var);
        SET var = var + 1;
    END WHILE;
END //
DELIMITER ;

CALL print_right_triangle();

内容的提问来源于stack exchange,提问作者Akash Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:20:27