日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

翻译:用户变量(User-Defined Variable)(已提交到MariaDB官方手册)

發布時間:2023/12/6 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 翻译:用户变量(User-Defined Variable)(已提交到MariaDB官方手册) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文為mariadb官方手冊:User-Defined Variables的譯文。

原文:https://mariadb.com/kb/en/user-defined-variables/
我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/user-defined-variables/

用戶變量是指由用戶創建,并存在于會話當中的變量。這意味著其他用戶無法訪問,且在當前會話關閉時,該用戶變量自動過期。但是,這些變量可以在多個查詢和存儲程序stored programs之間共享使用。

用戶變量的名稱前必須加上單個 at 符號作為前綴(@)。用戶變量的名稱部分可以安全地使用保留關鍵詞,名稱部分所允許的字符包括ASCII字母、數字、美元符($)、下劃線(_)和點(.)。如果要使用其他字符,需要使用以下幾種引用方式包圍它:

  • @`var_name`
  • @'var_name'
  • @"var_name"

這些字符可以進行正常的轉義(逃逸)。

現在用戶變量是不區分大小寫的,但在MySQL 4.1和更老的版本中是區分大小寫的。

用戶變量是無法聲明的。可以直接讀取一個存在或不存在的用戶變量,只不過不存在的用戶變量返回值為NULL。要設置一個用戶變量,可以使用以下幾種方式:

  • SET語句;
  • SQL語句中使用 := 操作符;
  • SELECT ... INTO

由于無法聲明用戶變量的類型,唯一能夠強制它們類型的方式是使用CAST()CONVERT()進行轉換:

SET @str = CAST(123 AS CHAR(5));

如果變量未賦值,則其值為NULL:

SELECT @x IS NULL; +------------+ | @x IS NULL | +------------+ | 1 | +------------+

在同一個語句中同時讀取變量、設置變量的值是不安全的行為(除非使用的是SET命令),因為這些操作的順序是不定的。

用戶變量可以用在絕大多數可以接受SQL表達式的MariaDB語句和子句中。但是有一些例外,例如LIMIT子句。

用戶變量不能替代語句中的關鍵字、標識符等,除非它們用在預編譯PREPARE語句中。(譯者注:英文版內容缺失,此句為本人自行修改。例如@a="SELECT",卻無法@a * from t。正如下面的例子中,如果用戶變量@sql不在PREPARE語句中進行預編譯,它無法直接執行)

@sql = 'DELETE FROM my_table WHERE c>1;'; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;

另一個較常用的功能是在查詢語句中充當計數器:

SET @var = 0; SELECT a, b, c, (@var:=@var+1) AS counter FROM my_table;

總結

以上是生活随笔為你收集整理的翻译:用户变量(User-Defined Variable)(已提交到MariaDB官方手册)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。