是的。
TLDR;使用您问题中的示例:
SET @v1=12;
SELECT * FROM table_1 WHERE id = @v1;
请注意,它们在当前会话结束时被销毁。
详情
MySQL 中的用户定义变量以@ 开头。
这是设置变量的一种方法:
SET @mysite := "example.com";
设置变量时也可以使用MySQL的CONCAT:
SET @home_url := CONCAT("https://www.", @mysite);
SET @site_url := CONCAT(@home_url, "/wordpress");
查看他们的价值观:
SELECT @mysite, @home_url, @site_url;
+-------------+-------------------------+-----------------------------------+
| @mysite | @home_url | @site_url |
+-------------+-------------------------+-----------------------------------+
| example.com | https://www.example.com | https://www.example.com/wordpress |
+-------------+-------------------------+-----------------------------------+
1 row in set (0.00 sec)
要更新一些值:
UPDATE wp_options SET option_value = @home_url WHERE option_name = "home";
UPDATE wp_options SET option_value = @site_url WHERE option_name = "siteurl";
不幸的是,似乎没有办法让 MySQL 向您显示所有用户定义变量的列表。
例如SHOWVARIABLES LIKE "%my%" 只会显示(系统?)变量,但不会显示用户定义的变量。
但是,如果您运行的是 MariaDB 10.2(相当于 MySQL 5.7)或更高版本,MariaDB 提供了一个插件来创建用户变量表,因此您可以对其进行查询。
详情请见my answer here。