簡體   English   中英

MySQL:在一條語句中混合使用SET @variable和SELECT

[英]MySQL: mixing SET @variable and SELECT in one statement

在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`;

https://www.db-fiddle.com/f/dJXZQT7nQvAcbbfon4HRXr/3

您不應該使用db-fiddle.com測試事物

在第一個示例中,錯誤出現在您的注釋中。 要成為有效的注釋,必須在--后面加上一個空格。

解決此問題后,所有這3種功能在MySQL官方命令行客戶端上均完全相同! 它仍然不在db-fiddle.com上,但是就像我說的那樣,這根本沒有關系。 選擇哪一個取決於個人喜好,以及是否要在命令行上輸出。 SET不輸出, SELECT輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM