NULL值表示遗漏的未知数据,默认表的列可以存放NULL值。SQL NULL值中,如果表某列是可选的,那么可以在不向该列添加值情况下插入新记录或是更新记录。这样这个字段就会以NULL值保存。NULL值的处理方式和其他值不一样,NULL值用作未知或不适合值的占位符(不能比较NULL和0,两者不等价)。
P_Id |
LastName |
FirstName |
Address |
City |
1 |
Hansen |
Ola |
|
Sandnes |
2 |
Svendson |
Tove |
Borgvn 23 |
Sandnes |
3 |
Pettersen |
Kari |
|
Stavanger |
如表persons中,Address列是可选的,如果在Address列插入一条不带值的记录,Address列会使用NULL值保存。如想测试NULL,可以通过比较运算符来测试NULL值,比如=、<或<>。需要使用IS NULL和IS NOT NULL操作符。
如果是选取在Address列中带有NULL值记录,必须使用IS NULL操作符:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL
结果集为(需要使用IS NULL来查找NULL值):
LastName |
FirstName |
Address |
Hansen |
Ola |
|
Pettersen |
Kari |
|
如果是在表中仅仅选择Address列中不带NULL值的记录。需要使用IS NOT NULL操作符:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL
结果集:
LastName |
FirstName |
Address |
Svendson |
Tove |
Borgvn 23 |
当数据库建表时,默认NULL,但在工作中一般建表时会禁用NULL。NULL表示的是一无所有。同空字符串、0是不等价的不可比较。如 <expr> = NULL 、 NULL = '' 得到的结果为 false,判断 NULL 必须使用 IS NULL 或 IS NOT NULL 进行判断。
在工作中,不会使用NULL。因为这不利于代码可读性和可维护性。对于强类型语言来说,查询INT值,结果得到NULL的话程序会出现崩溃。要兼容这样情况还要有执行更多操作不利于程序简易化。
如果是已经存在NULL值会影响 count()、 <col> != <value>、 NULL + 1 等查询、统计、运算情景的结果。
在SQL中,一般会有通配符来代替字符串中的任何其他字符,通配符一般都是和SQL LIKE操作符一起使用。SQL通配符可以用于搜索表中的数据。“%”可以替代 0 个或多个字符,“_”可以替代一个字符,“[charlist]”可以替代字符列中的任何单一字符,“[^charlist]
或
[!charlist]”替代不在字符列中的任何单一字符。
使用SQL%通配符, SQL 语句选取 url 以字母 "https" 开始的所有网站:
SELECT * FROM Websites
WHERE url LIKE 'https%';
下面的 SQL 语句选取 url 包含模式 "oo" 的所有网站:
SELECT * FROM Websites
WHERE url LIKE '%oo%';
下面的 SQL 语句选取 name 以一个任意字符开始,然后是 "oogle" 的所有客户:
SELECT * FROM Websites
WHERE name LIKE '_oogle';
欢迎持续关注华纳云!