在MySQL中,我可以仅在存在某些内容时选择列吗?
例如,我有以下查询:
select phone, phone2
from jewishyellow.users
where phone like '813%'
and phone2
Run Code Online (Sandbox Code Playgroud)
我正在尝试仅选择电话以813开头的行,而phone2中有一些内容.
Iva*_*uev 263
比较phone2空字符串的值:
select phone, phone2
from jewishyellow.users
where phone like '813%' and phone2<>''
Run Code Online (Sandbox Code Playgroud)
请注意,NULL值被解释为false.
Sta*_*nov 46
要检查是否字段为空的使用IS NULL,IS NOT NULL运营商.
MySql参考http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
dav*_*vek 32
检查NULL并清空字符串值:
select phone
, phone2
from users
where phone like '813%'
and trim(coalesce(phone2, '')) <>''
Run Code Online (Sandbox Code Playgroud)
NB我认为COALESCE()是SQL标准(-ish),而ISNULL()则不是.
Bri*_*ica 18
我一直在使用的答案一直很适合我,我还没有看到这里(这个问题已经很老了,所以它可能还没有工作)实际上是
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
Run Code Online (Sandbox Code Playgroud)
注意该> ''部分,它将检查该值是否为null,以及该值是否只是空格或空白.
基本上,如果字段中除了空格之外还有其他内容NULL,那么它就是真的.这也是超级短线,所以很容易写,并通过另一个加COALESCE()和IFNULL()功能是,这是指数友好的,因为你不能在一个领域一个函数的输出比较什么.
测试用例:
SELECT if(NULL > '','true','false');-- false
SELECT if('' > '','true','false');-- false
SELECT if(' ' > '','true','false');-- false
SELECT if('\n' > '','true','false');-- false
SELECT if('\t' > '','true','false');-- false
SELECT if('Yeet' > '','true','false');-- true
Run Code Online (Sandbox Code Playgroud)
更新有一点需要注意,我没想到,但是零或以下的数值不大于一个空字符串,所以如果你处理的数字可以是零或负数而不是那么做,它最近咬了我,很难调试:(
如果你正在使用字符串(char,varchar,text等),那么这将是完美的,只需要小心数字.
mic*_*man 16
如果phone2字段中存在来自意外数据输入的空格,则可以忽略具有IFNULL和TRIM功能的那些记录:
SELECT phone, phone2
FROM jewishyellow.users
WHERE phone LIKE '813%'
AND TRIM(IFNULL(phone2,'')) <> '';
Run Code Online (Sandbox Code Playgroud)
小智 8
令人惊讶的是(正如之前没有人提到的那样)发现以下条件可以完成这项工作:
WHERE ORD(field_to_check) > 0
Run Code Online (Sandbox Code Playgroud)
当我们需要排除 null 和空值时。有人知道这种方法的缺点吗?
select phone, phone2 from jewishyellow.users
where phone like '813%' and phone2 is not null
Run Code Online (Sandbox Code Playgroud)
SELECT phone, phone2
FROM jewishyellow.users
WHERE phone like '813%' and (phone2 <> "");
Run Code Online (Sandbox Code Playgroud)
根据您的默认值,可能需要进行一些调整。如果允许Null填充,则可以改为执行“ Not NULL”,这显然更好。
| 归档时间: |
|
| 查看次数: |
499886 次 |
| 最近记录: |