7 个解决方案
#1
where条件存在短路规则,特别是OR,只要其中一个条件为true,就返回true,本身好像已经实现你的要求了,但是抛开这个,你的where条件应该意图是返回满足这些数据的所有数据,所以更应该都查询。而不是按顺序,毕竟你这个不是if exists吧
#2
coalesce返回它的参数中第一个非空表达式。
SELECT COALESCE(NULL, NULL, NULL, GETDATE())
它将返回当前的日期。它略过第一个NULL值并返回第一个非空的值。
2011-09-02 14:37:41.530
SELECT COALESCE(NULL, NULL, NULL, GETDATE())
它将返回当前的日期。它略过第一个NULL值并返回第一个非空的值。
2011-09-02 14:37:41.530
#3
select * from BearerTb where coalesce(客户电话1,客户电话2,客户电话3)
like '%010-12345%'
#4
select * from BearerTb where coalesce(客户电话1,客户电话2,客户电话3)=‘010-12345’
#5
学习了coalesce,谢谢
#6
有上百万条的数据记录,每条记录都有80个字段,且有点字段是xml类型的,占用空间也很大,这样查询的效率会怎么样?感觉很不好,稍微多几个人查询时,sql server 占用cpu就30%~50%。
#7
哇哇,学习了coalesce。
#1
where条件存在短路规则,特别是OR,只要其中一个条件为true,就返回true,本身好像已经实现你的要求了,但是抛开这个,你的where条件应该意图是返回满足这些数据的所有数据,所以更应该都查询。而不是按顺序,毕竟你这个不是if exists吧
#2
coalesce返回它的参数中第一个非空表达式。
SELECT COALESCE(NULL, NULL, NULL, GETDATE())
它将返回当前的日期。它略过第一个NULL值并返回第一个非空的值。
2011-09-02 14:37:41.530
SELECT COALESCE(NULL, NULL, NULL, GETDATE())
它将返回当前的日期。它略过第一个NULL值并返回第一个非空的值。
2011-09-02 14:37:41.530
#3
select * from BearerTb where coalesce(客户电话1,客户电话2,客户电话3)
like '%010-12345%'
#4
select * from BearerTb where coalesce(客户电话1,客户电话2,客户电话3)=‘010-12345’
#5
学习了coalesce,谢谢
#6
有上百万条的数据记录,每条记录都有80个字段,且有点字段是xml类型的,占用空间也很大,这样查询的效率会怎么样?感觉很不好,稍微多几个人查询时,sql server 占用cpu就30%~50%。
#7
哇哇,学习了coalesce。