Sql中的set和select赋值方式的区别

结论: 1 . SELECT 可以一次分配多个变量,但 SET 一次只能分配一个变量。
2 . 如果返回多个值,SELECT 将获取最后一个值,而 SET 将导致错误。
3 . 如果没有返回值,SET 设置为 NULL,SELECT 保留其原始值。
4 . 标量子查询没有返回值,SET 和 SELECT 都设置为 NULL。

SQL什么符号开头的变量是局部变量

@Local变量有很多复杂的限制和声明,所以不要随便使用。

sql中什么是变量名

上周我研究了这个 SQL 变量的用法。
很有趣。

变量名称规则很重要。
必须以字母或下划线开头。
例如@var。
不能有空格。
不像@my-var。
特殊字符也不行。
长度限制也不同。
MySQL 默认为 6 4 个字符。

声明模式使用DECLARE。
例如 DECLARE @age INT。
很简单。

赋值使用SET或SELECT。
例如 SET @city = 'NewYork'。
引用时使用@符号。
例如,WHERE amount > @min_amount。

一个典型的场景就是动态查询。
无需硬编码。
例如,声明@dept; SET @dept = '工程'; 然后查询 WHERE Department = @dept。

存储中间结果也很方便。
声明 @total_sales DECIMAL(1 0,2 ); 然后使用 SELECT 来赋值。

也用于控制过程时。
例如,在存储过程中。
声明@counter INT = 0; 在 WHILE 循环中使用。

小心不同的数据库。
SQL Server 必须以 @ 为前缀。
MySQL可以加也可以不加。
PostgreSQL 使用 DECLARE 或 :variable 绑定。

要避免的常见错误。
例如,DECLARE @my-var INT; 包含连字符。
或声明 @select VARCHAR(1 0); 这使用保留关键字。

范围也很重要。
仅在声明的地方有效。
不可跨会话使用。
您必须使用临时表或全局变量。

总之,变量名用得好。
查询更加灵活。
该代码也易于维护。
没关系。