SQL SELECT TOP
SELECT TOP 用来规定要返回的记录的数目。但MySQL中并不支持这一语句,MySQL支持用LIMIT语句来选取指定的数据的数目。
SELECT TOP number|persent column_name
FROM table_name;
MySQL语法
SELECT column_name
FROM table_name
LIMIT number;
SQL[charlist]通配符
SQL中可以使用以下通配符
通配符 | 描述 |
---|---|
% | 代替0个或多个字符 |
_ | 代替1个字符 |
[charlist] | 字符列中任意单一字符 |
[^charlist]或[!charlist] | 不在字符列中任意单一字符 |
但是MySQL中只支持 % 和 _ 通配符,不支持 [charlist]
MySQL会把like '[qqq]yyy'
的中括号当成普通字符,而不是通配符。
所以当在MySQL中使用
SELECT * FROM BOOKS WHERE bookname LIKE '[m]ath' ;
它会查出的是bookname为 [m]ath的行,而不是bookname为math的行
那如果要在MySQL中实现 [charlist] 或者 [!charlist] 的效果就需要使用REGEXP 或 NOT REGEXP 运算符(或 RLIKE 和 NOT RLIKE)
下面的SQL语句表示选取BOOKS中以m、c或e开头的书
SELECT * FROM BOOKS
WHERE bookname REGEXP '^[mce]';
下面的SQL语句表示选取BOOKS中不以m、c或e开头的书
SELECT * FROM BOOKS
WHERE bookname REGEXP '^[^mce]';
SQL FULL JOIN
MySQL 暂不支持 FULL JOIN, 要实现完全外部链接需要额外处理。
MySQL实现完全外部链接,要使用 UNION 将一个左链接、和一个右链接去重合并
SELECT x.*,y.*
FROM 表1 x LEFT JOIN 表2 y
ON x.unit_NO = y.unit_NO
UNION
SELECT yx.*,.*
FROM 表1 x RIGHT JOIN 表2 y
ON x.unit_NO = y.unit_NO;
SQL FIRST()和LAST()函数
FIRST()用于返回指定列的第一个值,LAST()用于返回指定列的最后一个值。但都只有Ms Access支持。
MySQL 语法
FIRST()
SELECT column_name FROM table_name
ORDER BY column_name ASC
LIMIT 1;
LAST()
SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;
##LEN()
SQL LEN() 语法
SELECT LEN(column_name) FROM table_name;
MySQL 中函数为 LENGTH():
SELECT LENGTH(column_name) FROM table_name;