标签: condition

条件中的逻辑运算符 OR AND 和 WHERE 中的条件顺序

让我们检查这两个语句:

IF (CONDITION 1) OR (CONDITION 2)
...

IF (CONDITION 3) AND (CONDITION 4)
...
Run Code Online (Sandbox Code Playgroud)

如果CONDITION 1TRUE,会CONDITION 2被检查吗?
如果CONDITION 3FALSE,会CONDITION 4被检查吗?

条件如何WHERE:SQL Server 引擎是否优化WHERE子句中的所有条件?程序员是否应该以正确的顺序放置条件以确保 SQL Server 优化器以正确的方式解析它?

添加:

感谢 Jack 提供链接,来自 t-sql 代码的惊喜:

IF  1/0 = 1 OR 1 = 1
      SELECT 'True' AS result
ELSE
      SELECT 'False' AS result


IF  1/0 = 1 AND 1 = 0
      SELECT 'True' …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server optimization t-sql condition

38
推荐指数
2
解决办法
14万
查看次数

NOT (a=1 AND b=1) vs (a<>1 AND b<>1)

WHERESQL 查询的子句中,我希望这两个条件具有相同的行为:

NOT (a=1 AND b=1)
Run Code Online (Sandbox Code Playgroud)

对比

a<>1 AND b<>1
Run Code Online (Sandbox Code Playgroud)

第一个条件的行为符合预期,虽然我希望第二个条件做同样的事情,但事实并非如此。

这是非常基本的东西,但可耻的是我看不出我做错了什么。

condition

16
推荐指数
2
解决办法
4891
查看次数

如何根据where条件导出mysql数据库

我需要导出表的数据和结构,但数据必须具有特定条件(WHERE status=0 and id>20)。

如何根据来自 phpMyAdmin 或任何东西的 where 条件导出 mysql 数据库。

mysql phpmyadmin export condition

14
推荐指数
1
解决办法
3万
查看次数

反转可以返回 UNKNOWN 的布尔表达式

例子

我有一张桌子

ID  myField
------------
 1  someValue
 2  NULL
 3  someOtherValue
Run Code Online (Sandbox Code Playgroud)

和一个 T-SQL 布尔表达式,它可以计算为 TRUE、FALSE 或(由于 SQL 的三元逻辑)UNKNOWN:

SELECT * FROM myTable WHERE myField = 'someValue'

-- yields record 1
Run Code Online (Sandbox Code Playgroud)

如果我想获得所有其他记录,我不能简单地否定表达式

SELECT * FROM myTable WHERE NOT (myField = 'someValue')

-- yields only record 3
Run Code Online (Sandbox Code Playgroud)

我知道为什么会发生这种情况(三元逻辑),并且我知道如何解决这个特定问题。

我知道我可以使用myField = 'someValue' AND NOT myField IS NULL并且我得到一个永远不会产生 UNKNOWN 的“可逆”表达式:

SELECT * FROM myTable WHERE NOT (myField = 'someValue' AND myField IS NOT NULL)

-- yields records 2 …
Run Code Online (Sandbox Code Playgroud)

sql-server condition

11
推荐指数
2
解决办法
4041
查看次数

如何在没有存储过程的情况下有条件地在 MySQL 中引发错误

我需要有条件地引发错误,但我只能使用简单的语句,而不能使用存储过程。

我想做这样的事情:

select case when foo = "bar" then 1 else SIGNAL SQLSTATE 'ERROR' end;
Run Code Online (Sandbox Code Playgroud)

不幸的是,SIGNAL 仅可用于触发器和过程,我必须在现有应用程序中使用它,该应用程序只允许我输入语句,但不允许我输入过程。(我只有一条长线,无法设置分隔符等)

有没有其他方法可以有条件地导致运行时错误?

mysql condition errors raiserror

8
推荐指数
1
解决办法
4607
查看次数

PostgreSQL 中的条件字符串连接

我有一个parcels当前包含列owner_addr1, owner_addr2,的表owner_addr3。有时,后两个字段中的一个或两个字段为空。我想将它们组合成一个新的字段,owner_addr上面的每个字段//都在它们之间连接。

但是如果一个或多个原始列是 NULL,我不想连接//到结果列。因此,举例来说,如果owner_addr1123 4th Avenue SEowner_addr2owner_addr3NULL,然后我想要的结果列只是123 4th Avenue SE,没有123 4th Avenue SE // //(如果我只是做了这会发生CONCAT()//空字符串之间......我只是想添加//非之间的NULL列,或将其如果只有一个非NULL列,则完全退出。

有没有一种简单的方法可以在 Postgresql 中进行这种条件连接,它会遗漏空行?或者我应该写一个python脚本来做到这一点?

postgresql null condition string concat

8
推荐指数
1
解决办法
1万
查看次数

将日期列表条件中的日期转换为日期范围列表

我想查找发生在特定日期的所有记录。

SELECT *
FROM table1
WHERE date(column) in ($date1, $date2, ...);
Run Code Online (Sandbox Code Playgroud)

但是,正如你们中的许多人一样,知道这种比较不适用于索引。所以,我想知道是否有一种简单的方法可以将此查询转换为以下查询的样式而无需太多努力(即:不使用外部工具)。

SELECT *
FROM table1
WHERE (column >= $date1 AND column < $date1 + interval 1 day)
   OR (column >= $date2 AND column < $date2 + interval 1 day)
   ...
Run Code Online (Sandbox Code Playgroud)

所以优化器仍然可以使用索引。(我正在使用 MySQL,但 ANSI SQL 会很棒)

mysql performance condition date query-performance

7
推荐指数
1
解决办法
1431
查看次数

根据另一个值更改列的约束

是否可以根据另一列的值更改 postgres 中列的约束?例如(伪代码):

CREATE TABLE transactions(
    id SERIAL PRIMARY KEY,
    type TXN_TYPE NOT NULL,
    amount BIGINT,
    . . . .,
    refunded boolean DEFAULT FALSE,
    refund_id DEFAULT NULL if (CONSTRAINT link_refund CHECK (refunded=TRUE))=TRUE REFERENCES transactions(id)
);
Run Code Online (Sandbox Code Playgroud)

postgresql constraint condition check-constraints

6
推荐指数
1
解决办法
6901
查看次数

搜索 Redis 数据库

想象一下在 Redis 数据库中有一堆散列,每个散列代表一个用户对象。例如,您将如何让用户获得最低注册日期?位置ts_registered最低的用户。我在 redis.io命令页面上搜索了一些,但似乎没有在那里找到它的命令。

我对Redis没有太多经验,我基本上只是在检查它是如何工作的。

select condition redis

5
推荐指数
1
解决办法
2174
查看次数

如何选择不为空的数组?

为什么这如此棘手,令牌设置为什么,它不等于 null 也不等于空字符串?

SELECT lexemes
FROM ts_debug('This is a title')
WHERE alias = 'asciiword';

 lexemes 
---------
 {}
 {}
 {}
 {titl}
(4 rows)
Run Code Online (Sandbox Code Playgroud)

好吧..所以我想摆脱{}

SELECT lexemes
FROM ts_debug('This is a title')
WHERE alias = 'asciiword'
  AND lexemes <> '{}'
  AND lexemes <> ARRAY[]::text[]
  AND lexemes IS NOT NULL
  AND lexemes <> ARRAY[' ']
  AND lexemes <> ARRAY[null]::text[];
Run Code Online (Sandbox Code Playgroud)

我知道其中大多数都行不通。,但我完全困惑为什么<> '{}'不起作用<> ARRAY[]::text;。我该如何过滤掉这个?

postgresql null condition array postgresql-9.5

5
推荐指数
1
解决办法
2万
查看次数