在SO上查找,我发现了3种不同的语法来设置变量,但只有第3种有效。你能解释为什么吗?
#doesn't work at all (error)
SET @N = 3; --3rd word
SET @delimiter = ' ';
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(`sentence`, @delimiter, @N), @delimiter, -1)
FROM
`test`;
https://www.db-fiddle.com/f/dJXZQT7nQvAcbbfon4HRXr/1
#working not as expected
SELECT @N := 3;
SELECT @delimiter := ' ';
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(`sentence`, @delimiter, @N), @delimiter, -1)
FROM
`test`;
https://www.db-fiddle.com/f/dJXZQT7nQvAcbbfon4HRXr/2
#working fine
SELECT 3 INTO @N;
SELECT ' ' INTO @delimiter;
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(`sentence`, @delimiter, @N), @delimiter, -1)
FROM
`test`;
答案 0 :(得分:1)
您不应该使用db-fiddle.com进行测试
在您的第一个示例中,错误出现在您的注释中。为了成为有效的注释,--
后面必须有一个空格。
修复此问题后,这3种功能在MySQL官方命令行客户端上均完全相同!它仍然不在db-fiddle.com上,但是就像我说的那样,这根本没有关系。选择哪一个取决于个人喜好,以及是否要在命令行上输出。 SET
不输出,SELECT
不输出。