sample
mysql> describe shop ;
+---------+--------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------------------+------+-----+---------+-------+
| article | int(4) unsigned zerofill | NO | PRI | 0000 | |
| dealer | char(20) | NO | PRI | | |
| price | double(16,0) | NO | MUL | 0 | |
+---------+--------------------------+------+-----+---------+-------+
3 rows in set (000 sec)假设表为 t_1有两列为 col_1,col_2
查询条件v_col_1,v_col_2不知道有没有值
SELECT FROM t_1
WHERE col_1 = (CASE WHEN v_col_1 IS NULL THEN col_1 ELSE v_col_1 END)
AND col_2 = (CASE WHEN v_col_2 IS NULL THEN col_2 ELSE v_col_2 END);1IF()函数的使用
IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。
SELECT IF(TRUE,'A','B'); -- 输出结果:A
SELECT IF(FALSE,'A','B'); -- 输出结果:B12
2IFNULL()函数的使用
IFNULL(expr1,expr2),如果expr1的值为null,则返回expr2的值,如果expr1的值不为null,则返回expr1的值。
SELECT IFNULL(NULL,'B'); -- 输出结果:B
SELECT IFNULL('HELLO','B'); -- 输出结果:HELLO12
3NULLIF()函数的使用
NULLIF(expr1,expr2),如果expr1=expr2成立,那么返回值为null,否则返回值为expr1的值。
SELECT NULLIF('A','A'); -- 输出结果:null
SELECT NULLIF('A','B'); -- 输出结果:A12
4ISNULL()函数的使用
ISNULL(expr),如果expr的值为null,则返回1,如果expr1的值不为null,则返回0。
SELECT ISNULL(NULL); -- 输出结果:1
SELECT ISNULL('HELLO'); -- 输出结果:0利用系统表information_schemacolumns来查吧:
select table_schema,table_name,column_name
from information_schemacolumns
where table_name='t111' and is_nullable='NO'1)写入时使用NULL
insert into xxx values (NULL,NULL,NULL)
2)读取时使用empty()
if(empty(row["col3"])){
//do something
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)