sql - 在sql中保留=左边的列有什么区别

标签 sql postgresql

我在看别人的sql,他的代码是这样的

有一个名为 user_v 的 View ,其列 path 为 Array

select * from user_v where 'USER_TYPE'=path[2]

我不能用吗

path[2] = 'USER_TYPE'

最佳答案

这是一些程序员在使用容易混淆赋值和比较的语言(例如 C 或 PHP)时采取的预防措施,其中以下语句看起来很无辜:

 if ( $foo = 1 )

但它实际上是 1 赋值给$fooif 的计算结果总是true(至少在 PHP 中,1 为 true)。意思是 if ( $foo == 1 )

如果颠倒参数,错误会很快变得明显:

if ( 1 = $foo ) # SYNTAX ERROR
if ( 1 == $foo ) # Desired behaviour

这有时被称为“yoda 编码”,在 the coding standards of Wordpress, for example 中.

另请参阅:Why put the constant before the variable in a comparison?

在 SQL 中,出现这种困惑的可能性较小,因为虽然 = 可以表示赋值或比较,但很少有拼写错误会选择错误含义的情况。

但是,如果项目使用的所有其他语言的编码标准都要求它,那么通过在 SQL 中也使用它来强化习惯是有意义的,因为我想不出具体的原因不是 这样写。

关于sql - 在sql中保留=左边的列有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24446970/

相关文章:

sql - SOLite :Date formatter in SQLite

postgresql - 如何从 postgres 日期时间中减去秒数

mysql - 如何将 MySQL 数据库转储转换为新的 PG 数据库?

database - 如何更改数据库中表的所有权

postgresql - 如何将派生表转换为与 PostgreSQL 中的原始表相对应的复合类型

Django 用户注册和认证到多个数据库

sql - 按年和月分组并获得一个月的最小值和日期

mysql - 计算 MySQL 5.6 中重叠日期范围的最大数量

php - MS SQL 查询在 PHP 中失败但在 MS SQL Server Management Studio 中没有

java - 关系数据库——删除还是不删除?